【问题标题】:How to scrape multiple websites using Rcrawler in R?如何在 R 中使用 Rcrawler 抓取多个网站?
【发布时间】:2019-03-27 15:30:17
【问题描述】:

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

【问题讨论】:

  • 您可能需要将代码包装在某个函数中,并将其传递给可以处理多个内核的框架。

标签: r web-scraping rcrawler


【解决方案1】:

类似的东西。

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 会得到什么。

【讨论】:

    【解决方案2】:

    我不确定这在理论上是如何工作的,但您可以尝试创建许多对 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2018-07-17
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多