0

我注意到我们在这里没有太多关于 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
4

2 回答 2

0

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

a <- list()

Rcrawler_function <- function(no_conn,no_cores,MaxDepth ,Obeyrobots,saveOnDisk,ExtractXpath)
{
  x <- 1
  while(x < 5)
  {
    tryCatch( expr = {

  Rcrawler(ads_txt_4_cat$gen_link[x],no_conn = no_conn,no_cores = no_cores,MaxDepth = MaxDepth,Obeyrobots = Obeyrobots,saveOnDisk = saveOnDisk,ExtractXpathPat = ExtractXpath)
   assign("DATA",DATA,envir = globalenv())
     a[[x]] <<- DATA
    x = x+1


    }
  , error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
  }
}

Rcrawler_function(4,4,0,T,F,"body")
于 2020-02-17T12:57:32.493 回答
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 会获得什么。

于 2019-07-09T21:42:43.697 回答