読者です 読者をやめる 読者になる 読者になる

INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

"次へ"のURLを取得するにはrvest::follow_linkが便利

R

検索結果などpaginationされたページをクローリングする際、rvestパッケージのfollow_link()を使うと簡単に"次へ"のURLを取得できるのでメモしとく。


以下は10秒毎に"次の20件"のURLを取得するサンプル

rvest::follow_linkサンプル

某グルメサイトで実行した結果↓

> library(rvest)
> 
> page <- 1
> sesh <- html_session('http://**********/tokyo/')
> Sys.sleep(10)
> repeat{
+   sesh <- tryCatch(follow_link(sesh, "次の20件"), error=function(e)(return(NULL)))
+   message(Sys.time(), ' ', sesh$url)
+   page <- page + 1
+   
+   # "次の20件"がない or 10回進んだらループを抜ける
+   if(is.null(sesh) || page == 10) break
+   
+   Sys.sleep(10)
+ }
Navigating to http://**********/tokyo/rstLst/2/
2015-11-11 08:33:40 http://**********/tokyo/rstLst/2/
Navigating to http://**********/tokyo/rstLst/3/
2015-11-11 08:33:51 http://**********/tokyo/rstLst/3/
Navigating to http://**********/tokyo/rstLst/4/
2015-11-11 08:34:02 http://**********/tokyo/rstLst/4/
Navigating to http://**********/tokyo/rstLst/5/
2015-11-11 08:34:13 http://**********/tokyo/rstLst/5/
Navigating to http://**********/tokyo/rstLst/6/
2015-11-11 08:34:23 http://**********/tokyo/rstLst/6/
Navigating to http://**********/tokyo/rstLst/7/
2015-11-11 08:34:34 http://**********/tokyo/rstLst/7/
Navigating to http://**********/tokyo/rstLst/8/
2015-11-11 08:34:44 http://**********/tokyo/rstLst/8/
Navigating to http://**********/tokyo/rstLst/9/
2015-11-11 08:34:55 http://**********/tokyo/rstLst/9/
Navigating to http://**********/tokyo/rstLst/10/
2015-11-11 08:35:05 http://**********/tokyo/rstLst/10/
> 



  • 某グルメサイト、Webからだと60ページまでしか見れないのか・・・