八款不错的PHP网页爬虫库
使用爬虫抓取内容是我们开发人员每天都要遇到的事情。从抓取任务来讲,会遇到不同的需求,比如抓取京东的定价或库存,抓取某网站的资讯等。
在后端开发中,抓取爬虫非常流行,也有一些开发者在为人们开发高质量的解析器和抓取工具。在本篇文章中,我们就探索一些爬虫库,这些库对网站抓取以及存储数据都就有用的。
在PHP中,我们使用以下库进行数据和内容抓取:
Goutte
Simple HTML DOM
html SQL
cURL
Request
HTTPful
Buzz
Guzzle
1. Goutte
说明:
Goutte库很有用,它让PHP抓取内容更出色
基于Symfony Framework
提供API,可以从Ajax / XML响应中抓取内容
基于MIT许可证
特点:
适用于大型项目
基于OOP开发
中等解析速度
要求:
依赖PHP 5.5+和Guzzle 6+
说明:
https://goutte.readthedocs.io/en/latest/
更多内容:
https://menubar.io/php-scraping-tutorial-scrape-reddit-with-goutte
2.Simple HTML DOM
说明:
Simple HTML DOM可以非常轻松地访问和使用HTML
Simple HTML Dom使用选择器在HTML上寻找标签,就像jQuery
只需一行中就可从HTML抓取数据
没有其它库速度快
使用MIT许可证
特点:
它支持无效的网页抓取
要求:
需要PHP 5+
说明:
http://simplehtmldom.sourceforge.net/manual.htm
更多内容:
http://www.prowebscraper.com/blog/web-scraping-using-php/
3. htmlSQL
说明:
目前还是一个实验性的PHP库,你可以使用类似SQL的语法访问HTML页面的值
无需编写复杂的函数或正则表达式即可获取指定HTML值
如果你喜欢SQL,那么相信你也会喜欢这个库
可以将其用于各种杂项任务快速解析网页
基于BSD许可证
特点:
它提供了相对较快的解析,但是功能有限
要求:
PHP4 +以上版本均正常运行
配合Snoopy 1.2.3(可选-网络传输用)。
说明文档:
https://github.com/hxseven/htmlSQL
更多:
https://github.com/hxseven/htmlSQL/tree/master/examples
4. cURL
描述:
cURL是公认用于从网页提取数据最受欢迎的库之一(已内置在PHP扩展)
由于它是标准化的PHP库,无需包含第三方文件和类
要求:
要使用PHP的cURL函数,需安装libcurl,需要libcurl版本7.10.5或更高版本
说明文档:
http://php.net/manual/ru/book.curl.php
查看更多:
http://scraping.pro/scraping-in-php-with-curl/
5.Request
描述
Request是用纯PHP编写的HTTP库
它基于出色的 Python库中的Requests API
可以发送HEAD,GET,POST,PUT,DELETE和PATCH等HTTP请求
借助Request,可以添加自定义header,表单数据,多段文件和带有简单数组的参数,以及访问动态响应数据
基于ISC许可证
特点:
支持SSL验证
基本/摘要身份验证
自动解压缩
连接超时处理
要求:
需要PHP版本5.2+
说明文件:
https://github.com/rmccue/Requests/blob/master/docs/README.md
6. HTTPful
说明:
HTTPful是一个简单的PHP库。因为它可链接亦可读,它的目标就是使HTTP更有可读性。
它让开发人员专注于与API交互,而不必浏览curl set_opt页面。它的PHP REST客户端也很稳定
使用MIT许可证
特征:
可读的HTTP支持(GET,PUT,POST,DELETE,HEAD,PATCH和OPTIONS)
可自定义 Header
自动“智能化”解析。
自动有效载荷序列化。
基本验证
客户端证书验证
支持请求“模板”。
要求:
PHP版本5.3+
说明文件:
http://phphttpclient.com/docs/
7. Buzz
描述:
Buzz非常有用,它是一个轻量级的库,可轻松发出HTTP请求
设计简单,具有Web浏览器特性
使用MIT许可证
特征:
API简单
性能高
要求:
需要PHP版本7.1以上
说明文件:
https://github.com/kriswallsmith/Buzz/blob/master/doc/index.md
学到更多:
https://github.com/kriswallsmith/Buzz/tree/master/examples
8.Guzzle
说明:
Guzzle非常有用,因为它是一个PHP HTTP客户端,使您可以轻松地发送HTTP请求,它与Web服务集成也很容易
特点:
有一个简单的界面,可帮助构建查询字符串,POST请求,流式传输大文件,流式传输下载文件,使用HTTP cookie,上传JSON数据等
可以在同一接口的帮助下发送同步和异步请求
它利用PSR-7接口处理请求,响应和流。这使您可以在Guzzle中使用其他PSR-7兼容的库
它可以抽象出底层的HTTP传输,使您能够编写环境并传输不可知代码。即对cURL,PHP流,套接字或非阻塞事件循环没有强依赖
中间件系统能够增强客户端行为
要求:
需要PHP 5.3.3+以上版本。
说明文档:
http://docs.guzzlephp.org/en/stable/
更多内容:
https://lamp-dev.com/scraping-products-from-walmart-with-php-guzzle-crawler-and-doctrine/958
以上绍这些可用的Web抓取工具,根据自己的Web抓取需求,确定哪种工具适合自己。
有任何补充,欢迎各位留言。
相关阅读: