当前位置: 首页 > 面试题库 >

使用刮擦飞溅会严重影响刮擦速度吗?

晁璞
2023-03-14
问题内容

到目前为止,我一直只使用scrapy并编写自定义类来使用ajax处理网站。

但是,如果我要使用scrapy-splash,据我所知,它会在javascript之后刮擦呈现的html,那么对我的抓取工具的速度会产生重大影响吗?

用scrapy刮擦香草html页面与使用scrapy-splash渲染javascript html所花费的时间之间的比较是什么?

最后,scrapy-splash和Selenium如何比较?


问题答案:

这取决于页面上存在的javascript数量。

您必须知道,渲染所有JavaScript时,启动 会花费一些时间 ,而python应用程序将继续运行而无需等待渲染完成。因此,有时飞溅也无法做到。

  • 您可以显式地等待渲染,因为通常需要一些时间。
  • 这也是一个好习惯wait

这里,

import scrapy
from scrapy_splash import SplashRequest

yield scrapy.Request(url, callback=self.parse, meta={'splash':{'args':{'wait':'25'},'endpoint':'render.html'}})

要么

import scrapy
from scrapy_splash import SplashRequest

yield SplashRequest(url, self.parse, endpoint='render.html',
        args={'wait': 5, 'html' : 1 } )

在硒和硒之间

Selenium仅用于自动执行Web浏览器交互,Scrapy用于下载HTML,处理数据并将其保存(整个Web爬行框架)。

谈到抓取,我建议您查看一下scrapy,如果问题出在javascript上。

  • Scrapy已经有自己的javascript官方项目,名为scrapy-splash
  • 另外,您可以从Scranium中的Selenium创建新的webdriver实例,进行一些工作,提取数据,然后在完成所有工作后将其关闭。


 类似资料:
  • 问题内容: 我取这个页面与该请求库中的Node.js,并使用解析身体cheerio。 调用已解析的响应正文,发现该页面的title属性为: …什么时候应该: 我尝试将请求库的选项设置为include ,但这似乎并没有改变任何东西。 如何保留这些字符? 问题答案: 该页面似乎是用iso-8859-1编码的。您需要通过传递并使用诸如node- iconv之 类的东西来告诉您退回未编码的缓冲区。 如果要

  • 问题内容: 按计划运行Scrapy使我绕过Twist(ed)。 我以为下面的测试代码可以工作,但是第二次触发蜘蛛时出现错误: 我猜想,作为CrawlerProcess的一部分,Twisted Reactor会在不需要时再次启动,从而导致程序崩溃。有什么办法可以控制吗? 同样在这个阶段,如果有一种自动执行Scrapy Spider的替代方法可以按计划运行,我也很高兴。我试过了,但还是不能让它循环:

  • 提前感谢你的帮助。

  • 我正在尝试web Scrap https://www.nba.com/standings#/

  • 问题内容: 我已经写了很多刮板,但是我不确定如何处理无限滚动条。如今,大多数网站,Facebook,Pinterest等都有无限滚动条。 问题答案: 您可以使用硒来刮除Twitter或Facebook之类的无限滚动网站。 步骤1:使用pip安装Selenium 第2步:使用下面的代码自动执行无限滚动并提取源代码 步骤3:根据需要打印数据。

  • 我试着在一个. asp网站上运行一个蜘蛛,它需要登录授权和一些爬行到同一个网站内的不同页面。我昨天成功地使用我的蜘蛛登录,并正在用不同的功能抓取数据,当我在更改了as功能后再次运行蜘蛛时,蜘蛛停止了工作。我不知道发生了什么,我对网络抓取相当陌生。下面是代码: 以下是日志: 代码曾经能够尝试从页面中抓取一些我想要的数据,但没有成功,但我相信这只是因为我使用了错误的css选择器。现在它只是打开和关闭而