【问题标题】:R and Web Scraping with looping循环的 R 和 Web 抓取
【发布时间】:2015-02-03 10:28:41
【问题描述】:

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

website <- html("http://www.example.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()

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

【问题讨论】:

  • 请先展示你的努力。

标签: r web-scraping rvest


【解决方案1】:

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

如果没有实际示例,这很难测试,但请尝试以下操作:

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()

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多