【问题标题】:Rcrawler package: Rcrawler not crawling some websitesRcrawler 包:Rcrawler 不抓取某些网站
【发布时间】:2018-04-20 14:44:57
【问题描述】:

我正在使用 Rcrawler 来抓取网址向量。对于他们中的大多数人来说,它运行良好,但时不时地,他们中的一个并没有被抓取。起初我只是在 https:// 网站上注意到这一点,地址为 here。但我使用的是 0.1.7 版本,它应该具有 https:// 功能。

我还发现 this other user 遇到了同样的问题,但也有 http:// 链接。我检查了我的实例,但他的网站也没有为我正确抓取。

当我尝试抓取这些网站之一时,我得到了以下结果:

>library(Rcrawler)
>Rcrawler("https://manager.submittable.com/beta/discover/?page=1&sort=")
>In process : 1..
Progress: 100.00 %  :  1  parssed from  1  | Collected pages: 1  | 
Level: 1 
+ Check INDEX dataframe variable to see crawling details 
+ Collected web pages are stored in Project folder 
+ Project folder name : manager.submittable.com-191922 
+ Project folder path : /home/anna/Documents/Rstudio/Submittable/manager.submittable.com-191922 

有什么想法吗?仍在等待创作者的回复。

【问题讨论】:

  • 是否有任何错误消息可以提供更多见解?根据那个日志,一切都很好
  • 可能是该网站的robots.txt内容禁止抓取?
  • @NicoHaase,没有错误消息。根据 R 的说法,一切都按预期运行,但是如果您访问这些站点,肯定会有内部 url 没有被拾取。也许 42- 是对的,这是房东采取的安全措施。

标签: r web-scraping web-crawler rcrawler


【解决方案1】:

您尝试爬取受密码保护的 + javascript 页面,您需要一个 web 驱动程序来创建登录会话并呈现 javascript 元素,为此,Rcrawler V 0.1.9 实现了一个 phantomjs webdriver。

对于您的情况,首先安装 Rcrawler 的最新版本,然后按照以下步骤操作:

1 - 安装网络驱动程序(实际上是phantomjs)

library(Rcrawler)    
install_browser()

2 - 运行无头浏览器(真正的浏览器但不可见 br

如果您收到错误,这意味着您的操作系统或防病毒软件正在阻止 Web 驱动程序 (phantom.js) 进程,请尝试暂时禁用您的防病毒软件或调整您的系统配置以允许 phantomjs 和 processx 可执行文件

3- 验证会话

 br<-LoginSession(Browser = br, LoginURL = 'https://manager.submittable.com/login',
                  LoginCredentials = c('your login','your pass'),
                  cssLoginFields =c('#email', '#password'),
                  XpathLoginButton ="//*[@type=\'submit\']" )

4 - 抓取网站页面

Rcrawler(Website ="https://manager.submittable.com/beta/discover/",no_cores = 1,no_conn = 1, LoggedSession = br, RequestsDelay = 3)

您可以使用以下方式访问 webdriver 功能:

br$session$

RequestsDelay:知道某些 javascript 需要一些时间才能完全加载,给每个请求 3 秒

no_cores=no_conn=1:逐页检索页面,因为某些网站拒绝记录多个会话。

这应该抓取受密码保护的网页,但是,较大的网站具有防止网络抓取的高级保护,例如 reCAPTCHA 或其他检测连续/自动请求的 http/javascript 规则。因此,如果他们提供 API,最好使用他们的 API。

我们仍在努力提供在一个命令中抓取多个网站的能力。到目前为止,您只能单独抓取每个,或者如果您想从同一网站抓取 URL/页面,请使用 ContentScraper 功能

爬虫创建者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多