爬虫不是一个小众的场景,所以无论是哪个语言,都有很多相应的生态库.这里介绍一下PHP的技术方案和代码量.
对页面的解析能力
PHP的官方扩展中有Dom扩展,但是我建议使用electrolinux/phpquery这个库,他相当于一个PHP版的JQ.
算上加载文件,只要三行就能获取title标签内容.
对数据库的操作能力
PHP对数据库的操作能力不是吹的,原生扩展中支持PDO,这里可以尝试ThinkPHP的think-orm.
简简单单一学就会.
爬虫效率
PHP对于性能的优化有很多很深的解决方案,包括使用协程等,这里只介绍最简单的的一种方式,使用guzzle这个库(他使用curl的并行加载特性).
代码量
如上面例子所示,代码量并不多,去掉配置文件,只有十几行代码,最关键的是我们需要的特性并没有削弱.
比如:
极简的DOM解析
健壮的SQL操作
发起并行请求
解析JS
有时候我们要抓取的页面是依赖JS执行的,这是需要一个无头浏览器,此时介绍这样一个库,他能够很简单的完成对phantomjs的操作.
PHPPhantomJS是一个灵活的PHP库,让PHP通过很简单的代码来操作PhantomJS无头浏览器加载页面。让PHP加载的网页地址执行JS/页面截图/导出PDF.
他可以非常方便地实现这些功能:
使用无头浏览器PhantomJS加载请求
查看详细的响应数据,包括页面内容、标题、状态代码等
处理重定向
查看JS控制台输出报错
查看详细的PhantomJS调试信息
保存页面的截图
将页面导出为PDF
设置浏览窗口大小
为PDF导出设置页眉页脚
指定截图位置x,y和宽高
延迟页面渲染(等待页面加载完成)
轻松构建和运行PhantomJS脚本
PHPPhantomJS只要求PHP5.4.0或以上即可。
基本用法
使用phantomjs发起一个请求非常简单:
使用PHP总是更舒服,更简单.