2016-08-04 11 views
1

this topicに基づいてトラフィックデータを掻き集めるコードをいくつか開発しました。ログイン後に多くのページを削る必要がありますが、現在は自分のコードが各URLのサイトに繰り返しログインしているようです。セッションを再利用してログインを繰り返さないようにするにはどうしたらいいですか?ここに擬似コードがあります:セッションを再利用してrvestを使用してスクレイピングを繰り返すときのログインを回避する方法はありますか?

generateURL <- function(siteID){return siteURL} 

scrapeContent <- function(siteURL, session, filled_form){return content} 

mainPageURL <- 'http://pems.dot.ca.gov/' 
pgsession <- html_session(mainPageURL) 
pgform <- html_form(pgsession)[[1]] 
filled_form <- set_value(pgform, 'username'='myUserName', 'password'='myPW') 

siteIDList = c(1,2,3) 
vectorOfContent <- vector(mode='list', length=3) #to store all the content 

i=1 
for (siteID in siteIDList){ 
    url = generateURL(siteID) 
    content = scrapeContent(url, pgsession, filled_form) 
    vectorOfContent[[i]]=content 
    i = i +1} 

私はこのドキュメントを読んでいますが、そのような詳細はありません。私の質問:繰り返しログインするのを避けるためにセッションをどのように再利用できますか?ありがとう!

答えて

1

あなたはこのような何かを行うことができます。

require(rvest) 
pgsession <- html_session(mainPageURL) 
pgform <- html_form(pgsession)[[1]] 
filled_form <- set_value(pgform, 'username'='myUserName', 'password'='myPW') 
s <- submit_form(pgsession, pgform) # s is your logged in session 

vectorOfContent <- vector(mode='list', length=3) 

for (siteID in siteIDList){ 
    url <- generateURL(siteID) 
    # jump_to navigates within the session, read_html parses the html 
    vectorOfContent[[siteID]]=s %>% jump_to(generateURL) %>% read_html() 
    } 
+0

ありがとうございます! jump_to()は本質的に私が探しているものです。返事が遅くなってごめん。 – user3768495