基于DevTools协议+Chromium headless的客户端爬虫框架

本文讨论了使用PhantomJS进行爬虫的局限性,如陈旧的内核版本,以及如何转向DevTools协议和Chromium headless模式的可能性。文章详细分析了核心需求,包括无头模式、自动化页面控制和用户输入模拟,并提出了通过NodeJS封装DevTools的潜在解决方案。同时,作者列出了检查DevTools协议是否支持这些需求的待办事项,并指出实现客户端爬虫框架可能面临的挑战,如使用Lua或DSL作为绑定脚本语言,以及实现广告过滤功能时遇到的问题,如与React.js渲染的不兼容性。
摘要由CSDN通过智能技术生成

之前的做法是使用PhantomJS以及一个html+嵌套iframe包含目标网站URL+跨域dom操作的简单性能优化。

PhantomJS实现下面的核心需求:
(1)无头模式,然而PhantomJS内核基于老版本的QtWebKit,与最新版本的Chromium代码相比,版本太老了,很多特性用不了(虽然目前国内网站应该也还没开始用上这些?比如ServiceWorker、CSS Custom Properties、Web Components等等)
(2)可以等待PhantomJS将页面load完成之后,注入JS执行,这之间需要支持下列核心特性:
    2.1 可以通过注入JS代码的方法导入外部JS资源,一般就是动态插入一个<script>元素,并设置src属性;
    2.2 可以用注入的JS代码来自动化地控制页面的scroll,或者根据特定网站的代码直接调用相关的JS Event Handler函数
    2.3 当然,PhantomJS应该允许从外部直接触发用户输入事件,比如根据某个CSS Selector Path定位到某个Element,然后触发其click事件,浏览器本身通常不支持这么做,但是浏览器的扩展,比如WebDriver这样的原本设计用于自动化Web测试的工具支持这么做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值