Rcrawler包:Rcrawler不爬取某些网站
Rcrawler package: Rcrawler not crawling some websites
我正在使用 Rcrawler 来抓取一个 url 向量。对于他们中的大多数人来说,它运作良好,但时不时地,他们中的一个人不会被抓取。起初我只是在 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
有什么想法吗?还在等创作者的回复。
您尝试抓取受密码保护的 + javascript 页面,您需要网络驱动程序来创建登录会话并呈现 javascript 元素,因此,Rcrawler V 0.1.9 实现了phantomjs webdriver .
对于您的情况,首先安装最新版本的 Rcrawler,然后按照以下步骤操作:
1 - 安装网络驱动程序(实际上是 phantomjs)
library(Rcrawler)
install_browser()
2 - 运行 无头浏览器(真正的浏览器,但不可见
br <-run_browser()
如果出现错误,这意味着您的操作系统或防病毒软件正在阻止网络驱动程序 (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)
您可以使用以下方式访问网络驱动程序功能:
br$session$
RequestsDelay:给每个请求 3 秒知道一些 javascript 需要一些时间才能完全加载
no_cores=no_conn=1: 一页一页地检索页面,因为有些网站拒绝多个记录的会话。
这本应抓取受密码保护的网页,但是,较大的网站具有针对网络抓取的高级保护,例如 reCAPTCHA 或其他 http/javascript 检测 successive/automated 请求。所以最好使用他们的API,如果他们提供的话。
我们仍在努力提供在一个命令中抓取多个网站的能力。到现在为止你只能单独抓取每个,或者如果你想从同一个网站抓取 URLs/pages
,请使用 ContentScraper 功能
Rcrawler 创作者
我正在使用 Rcrawler 来抓取一个 url 向量。对于他们中的大多数人来说,它运作良好,但时不时地,他们中的一个人不会被抓取。起初我只是在 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
有什么想法吗?还在等创作者的回复。
您尝试抓取受密码保护的 + javascript 页面,您需要网络驱动程序来创建登录会话并呈现 javascript 元素,因此,Rcrawler V 0.1.9 实现了phantomjs webdriver .
对于您的情况,首先安装最新版本的 Rcrawler,然后按照以下步骤操作:
1 - 安装网络驱动程序(实际上是 phantomjs)
library(Rcrawler)
install_browser()
2 - 运行 无头浏览器(真正的浏览器,但不可见 br <-run_browser()
如果出现错误,这意味着您的操作系统或防病毒软件正在阻止网络驱动程序 (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)
您可以使用以下方式访问网络驱动程序功能:
br$session$
RequestsDelay:给每个请求 3 秒知道一些 javascript 需要一些时间才能完全加载
no_cores=no_conn=1: 一页一页地检索页面,因为有些网站拒绝多个记录的会话。
这本应抓取受密码保护的网页,但是,较大的网站具有针对网络抓取的高级保护,例如 reCAPTCHA 或其他 http/javascript 检测 successive/automated 请求。所以最好使用他们的API,如果他们提供的话。
我们仍在努力提供在一个命令中抓取多个网站的能力。到现在为止你只能单独抓取每个,或者如果你想从同一个网站抓取 URLs/pages
,请使用 ContentScraper 功能Rcrawler 创作者