R和Web Scraping循环

时间:2014-12-05 09:33:50

标签: r web-scraping rvest

我正在使用urls http://domain.com/post/X抓取一个网站,其中 X是一个从1:5000开始的数字 我可以使用此代码使用rvest废弃:

website <- html("http://www.domain.com/post/1")

Name <- website%>% 
  html_node("body > div > div.row-fluid > div > div.DrFullDetails > div.MainDetails > div.Description > h1") %>%
  html_text()

Speciality <- website %>% 
  html_node("body > div > div.row-fluid > div > div.DrFullDetails > div.MainDetails > div.Description > p.JobTitle") %>%
  html_text()

我需要代码从网站上抓取所有页面,并将疤痕数据放在一个表格中,每一页都放在一个新行中。 请帮忙

1 个答案:

答案 0 :(得分:1)

我会将您的代码包装在lapply中抓取单个页面,然后使用rbindlist包中的data.table来合并每个页面中的信息。

如果没有实际的例子,这很难测试,但尝试这样的事情:

library(rvest)
library(data.table)

scrapeDomain <- function(baseURL="http://www.domain.com/post", index=1:10) {

  scrape1 <- lapply(index, function(n) {

    website <- paste(baseURL, n, sep="/") %>%
      html()

    name <- website %>% 
      html_node("body > div > div.row-fluid > div > div.DrFullDetails > div.MainDetails > div.Description > h1") %>%
      html_text()

    speciality <- website %>% 
      html_node("body > div > div.row-fluid > div > div.DrFullDetails > div.MainDetails > div.Description > p.JobTitle") %>%
      html_text()

    data.table(website=website, name=name, specialty=specialty)

  } )

  rbindlist(scrape1)

}

scrapeDomain()