首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有刮刀的Web爬行器,使用木偶和刮除器

带有刮刀的Web爬行器,使用木偶和刮除器
EN

Stack Overflow用户
提问于 2019-12-04 11:26:45
回答 1查看 3.1K关注 0票数 0

请注意,我是一个新手,当涉及到网络技术。我必须抓取和刮相当多的网站,这些网站是由React / javascript / html技术组合而成的。这些网站在所有地方都有大约。10万至50万页。

我计划使用Selenium和Scrapy来完成爬行和抓取。单是Scrapy就不能对页面进行抓取,使用Selenium来抓取常规的javascript/html是非常耗时的。

我想知道是否有任何方法我的爬虫/刮刀可以理解反应页面与Javascript/html页面的区别。

等待回应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 04:57:54

我不知道这是否太晚了,但我还是会就这个问题写两分钱。

我必须抓取和刮相当多的网站,这些网站是由React / javascript / html技术组合而成的。

如果我错了,请纠正我,但我相信您的意思是,该站点的某些网页包含感兴趣的数据(要刮掉的数据),这些数据已经被HTML加载,而不涉及JS。因此,您希望区分那些您需要使用JS呈现的网页,而不是那些不使用JS呈现的网页,以提高抓取效率。

直接回答您的问题,爬虫没有智能系统可以用来区分这两种类型的网页而不至少呈现一次.

如果网页的URL遵循一种模式,使您能够很容易地区分使用JS的页面和只需要HTML爬行的页面:

您可以尝试至少呈现一次页面,并在响应周围编写条件代码。我的意思是,首先使用Scrapy (HTML呈现)抓取目标URL,如果接收到的响应不完整(假设无效响应不是由于错误的元素选择代码造成的),那么尝试使用JS呈现器第二次爬行它。

这就引出了我的第二点。如果网页没有固定的呈现URL模式,您可以简单地尝试使用一个更快、更轻量级的JS呈现器。

实际上,当大量爬行时,Selenium的开销相对较高(在您的情况下高达0.5M ),因为它最初不是为它构建的。您可以查看雕刻机,这是Google Node.js库木偶师在Python中的一个非官方端口。这将允许您轻松地将它与Scrapy集成。

在这里,您可以阅读Puppeteer的赞成与反对,以便更好地将其校准到您的用例。一个主要的限制是Puppeteer目前只支持Chrome。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59174971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档