scrapy定制爬虫-爬取javascript内容

许多网址都应用javascript...网页页面由js动态性转化成,一些js事件开启的网页页面內容转变,连接开启.乃至有一些网址在沒有js的情形下压根不工作中,取代它的回到你一条相近"请浏览器打开js"这类的內容.

对javascript的支撑有四种解决方法:
1,敲代码仿真模拟有关js逻辑性.
2,读取一个有页面的电脑浏览器,相近各种各样普遍用以检测的,selenium这种.
3,应用一个无页面的电脑浏览器,各种各样根据webkit的,casperjs,phantomjs这些.
4,融合一个js实行模块,自身建立一个轻量的电脑浏览器.难度系数很大.

针对简易的比较有限抓取每日任务,若可以根据编码仿真模拟js逻辑性,优选这类计划方案,例如,在duckduckgo百度搜索引擎中,换页这一姿势是靠js开启的.仿真模拟好像依然难以,随后我注意到他网页页面的第二个form,好像submit后就可以换页,试了一下果真如此.
在敲代码仿真模拟有关js逻辑性时,最先试下关闭浏览器的js,看下是不是能获得到必须的物品.有一些网页页面带来了沒有js的兼容.不好再开chrome的控制面板或firebug观查js逻辑性,可能是ajax这种收取和发送包.用urllib2(强烈推荐requests库)仿真模拟就可以,也可能是改动dom这类,用lxml这种相匹配改动就可以.来说便是js实行了哪些,就用python编码相匹配仿真模拟实行.

也可挑选应用selenium这种,缺陷是高效率很低,你理应先测试一下selenium运行一个电脑浏览器案例所需時间你是不是可接纳.这一时间段一般在秒等级.再充分考虑打开浏览器网页页面3D渲染,就变慢了.在高效率可接纳的条件下,这一计划方案也非常好.
这一计划方案的另一个问题是在沒有桌面环境的网络服务器上,selenium估测没法运作.

对经营规模很大,仿真模拟js不行得通,selenium高效率太低,或必须在无桌面环境上实行的状况.有没有页面电脑浏览器,好多个无页面电脑浏览器大致状况如下所示:
1,casperjs,phantomjs:非py,可以根据命令读取,作用基本上达到,强烈推荐首先看下这两个是不是达到.较为完善.phantomjs还有一个第三方的webdriver协议书完成,从而可根据selenium调phantomjs完成无页面.
2,ghost,spynner等:py订制的webkit,本人感觉spynner编码乱,ghost代码品质非常好.但有bug.我看了好多个这类库后自身改了一个.
这类计划方案的具体情况见下边.

最终也有一种挑选,在js实行模块的根基上,自身建立一个轻量的适用js的无页面电脑浏览器.除非是您有非常非常十分多必须抓取的內容,高效率十分十分十分关键.若您有这一念头,能看下pyv8,在v8的实例编码中有一个根据v8完成的简单电脑浏览器实体模型.是的,仅仅个实体模型,并不彻底可以用,你需要自身添充里边的一些方式.完成这种你需要在js模块(v8),http库(urllib2)以上完成这种作用,1,当网页页面开启时获得其包括的js代码,2,搭建一个电脑浏览器实体模型,包含各种各样事情与dom树.3,实行js.此外很有可能也有其它一些关键点.难度系数比较大.
在网上可以寻找一淘常用购物比价网络爬虫的一篇有关ppt.该网络爬虫也仅采用的第三种计划方案.能看下这篇ppt.该网络爬虫大约是用的webkit,scrapy,此外把scrapy的生产调度序列改成根据redis的,完成分布式系统.

怎样完成:

回过头说点环境专业知识,scrapy应用了twisted.一个多线程互联网架构.因而要注意潜在性的堵塞状况.但注意到settings中有一个主要参数是设定ItemPipeline的并行度.从而推断pipeline不容易堵塞,pipeline很有可能是在线程池中实行的(未认证).Pipeline一般用以将爬取到的信息内容储存(写数据库查询,写文档),因而这儿你也就不必担心用时实际操作会堵塞全部架构了,也就无需在Pipeline里将这一写实际操作完成为多线程.
此外架构的别的一部分.全是多线程的,简易来说便是,网络爬虫转化成的要求交给生产调度器去在线下载,随后网络爬虫执行.生产调度器进行在线下载之后将回应交给网络爬虫分析.

在网上寻找的参照事例,一部分将js适用写到了DownloaderMiddleware中,scrapy官方网站的code snippet也是那样 .若这样完成,就堵塞了全部架构,网络爬虫的工作模式变成了,在线下载-分析-在线下载-分析,而没有是并行处理的在线下载.在对效果规定不高的小规模纳税人抓取中问题不大.
更强的作法是将js适用提到scrapy的downloader里.在网上有一个那样的完成(应用selenium phantomjs).但是仅适用get请求.

在兼容一个webkit给scrapy的downloader时,有各种各样关键点必须解决.

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)
如需 WordPress 优化加速、二次开发、网站维护、企业网站建设托管等服务,可联系我购买付费服务:点此联系我 | 近期站内热门福利推荐:

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 1798582342@qq.com 进行处理!

文章版权及转载声明

作者:有趣本文地址:https://www.zyhao.net/295681.html最后更新时间为 2022年01月23日 星期日 17:18:05
文章转载或复制请以超链接形式并注明来源出处 有趣源码
声明:某些文章或资源具有时效性,若有 错误 或 所需下载资源 已失效,请联系客服QQ:11210980

有趣源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章