Я использую пакет rvest
для очистки информации со страницы http://www.radiolab.org/series/podcasts. После выскабливания первой страницы, я хочу следовать «Next» ссылку в нижней части, царапать, что вторая страница, перейти на третью страницу, и т.д.Следующая «следующая» ссылка с относительными путями с использованием rvest
Следующая строка выдает ошибку:
html_session("http://www.radiolab.org/series/podcasts") %>% follow_link("Next")
## Navigating to
##
## ./2/
## Error in parseURI(u) : cannot parse URI
##
## ./2/
Проверка HTML показывает, есть некоторый дополнительный хлам вокруг «./2/», что rvest
, видимо, не нравится:
html("http://www.radiolab.org/series/podcasts") %>% html_node(".pagefooter-next a")
## <a href=" ./2/ ">Next</a>
.Last.value %>% html_attrs()
## href
## "\n \n ./2/ "
Вопрос 1: Как я могу получить rvest::follow_link
, чтобы правильно обрабатывать эту ссылку, как это делает мой браузер? (Я мог бы вручную захватить «Next» ссылку и очистить его с регулярным выражением, но предпочитают, чтобы воспользоваться преимуществами автоматизации снабженным rvest
.)
В конце follow_link
кода, он вызывает jump_to
. Так что я попытался следующие:
html_session("http://www.radiolab.org/series/podcasts") %>% jump_to("./2/")
## <session> http://www.radiolab.org/series/2/
## Status: 404
## Type: text/html; charset=utf-8
## Size: 10744
## Warning message:
## In request_GET(x, url, ...) : client error: (404) Not Found
копания в коде, это выглядит как проблема с XML::getRelativeURL
, который использует dirname
содрать последнюю часть исходного пути («/ подкастов»):
XML::getRelativeURL("./2/", "http://www.radiolab.org/series/podcasts/")
## [1] "http://www.radiolab.org/series/./2"
XML::getRelativeURL("../3/", "http://www.radiolab.org/series/podcasts/2/")
## [1] "http://www.radiolab.org/series/3"
Вопрос 2: Как я могу получить rvest::jump_to
и XML::getRelativeURL
правильно обрабатывать относительные пути?
Установите версию dev, где исправлена эта ошибка – hadley
Ну, вторая ошибка; rvest не собирается магически восстанавливать плохие URL-адреса. – hadley