如何在R中使用Rcrawler抓取多个网站?

时间:2019-03-27 15:30:18

标签: r web-scraping rcrawler

我注意到我们对Rcrawler的疑问不多,我认为这是抓取网站的好工具。但是,我告诉它刮多个网站时遇到问题,因为它目前只能执行3个。如果有人对此问题有经验,请告诉我。谢谢。

我尝试将所有URL放在列表/向量中,但仍然没有这样做。这是我的抓取代码,用于获取网站的标题,描述和关键字。

Rcrawler(Website = c("http://www.amazon.com", "www.yahoo.com", "www.wsj.com"),
 no_cores = 3, no_conn = 3, MaxDepth = 0, 
ExtractXpathPat = c('/html/head/title', '//meta[@name="description"]/@content', '//meta[@name="keywords"]/@content'),
 PatternsName = c("Title", "Description", "Keywords"), saveOnDisk = FALSE)

如果我有3个以上的网站,则会出现此错误:

Error in Rcrawler(Website = c("http://www.amazon.com", "www.yahoo.com",  : 
  object 'getNewM' not found

2 个答案:

答案 0 :(得分:0)

这样的事情。

library(tidyverse)
library(rvest)

# Create vector
mylist <- c("http://www.amazon.com", "http://www.yahoo.com", "http://www.wsj.com")
# Create the for statement
for (i in mylist)
{ 
  #print(i)
  webpage <- read_html(i)
  print(webpage)

}

或者,将每个页面加载到列表中并解析该列表。最后,您可以考虑将结果保存为CSV。您应该知道,刮擦许多不同的网页几乎可以肯定会产生非常不同的结果。我可以肯定地理解为什么一个人想要遍历同一站点的不同URL,但是我不确定通过遍历不同站点的不同URL会得到什么。

答案 1 :(得分:0)

我不确定这在理论上如何工作,但是您可以尝试创建许多对R搜寻器的调用。
例如在while循环中:

p.validation-error.required-validation {
  display: none;
}