rvest
パッケージを使用して、ページhttp://www.radiolab.org/series/podcastsから情報をスクラップしています。rvestを使用した相対パスによる次のリンクに続き、
html_session("http://www.radiolab.org/series/podcasts") %>% follow_link("Next")
## Navigating to
##
## ./2/
## Error in parseURI(u) : cannot parse URI
##
## ./2/
:最初のページをこするした後、私はなど
次の行がエラーを与えて、一番下の「次へ」のリンクをたどること、2ページ目をこすり、3ページ目に移動します
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: はどのように私はを得ることができますHTMLを検査するrvest
が明らかに好きではないことを「./2/」の周りにいくつかの余分な嫌なものがあることを示し私のブラウザのようにこのリンクを正しく処理するには0? (私は手動で「次へ」のリンクをつかむと、正規表現でそれをクリーンアップするが、rvest
を提供する自動化の利点を取ることを好むことができます。)
をfollow_link
コードの終わりに、それはjump_to
を呼び出します。
dirname
を使用する、
XML::getRelativeURL
であるよう
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("./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
もう2番目のバグは、 rvestは魔法のように悪いURLを修復するつもりはありません。 – hadley