259f533d0c0648dcb5e302631e95cd1c.jpg

在后端开发中,抓取爬虫非常流行,也有一些开发者在为人们开发高质量的解析器和抓取工具。在本篇文章中,我们就探索一些爬虫库,这些库对网站抓取以及存储数据都就有用的。
 
在PHP中,我们使用以下库进行数据和内容抓取:
 
  1. Goutte
  2. Simple HTML DOM
  3. html SQL
  4. cURL
  5. Request
  6. HTTPful
  7. Buzz
  8. Guzzle

 1. Goutte
 
  • 说明:[list=square][*]Goutte库很有用,它让PHP抓取内容更出色
  • 基于Symfony Framework
  • 提供API,可以从Ajax / XML响应中抓取内容
  • 基于MIT许可证

[/*]
[*]
特点:
[list=square]
[*]
适用于大型项目[/*]
[*]
基于OOP开发[/*]
[*]
中等解析速度[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
依赖PHP 5.5+和Guzzle 6+[/*]
[/list]
[/*]
[*]
说明:
[list=square]
[*]
https://goutte.readthedocs.io/en/latest/[/*]
[/list]
[/*]
[*]
更多内容:
[list=square]
[*]
https://menubar.io/php-scraping-tutorial-scrape-reddit-with-goutte [/*]
[/list]
[/*]
[/list]
 
 2.Simple HTML DOM
 
  • 说明:[list=square][*]Simple HTML DOM可以非常轻松地访问和使用HTML
  • Simple HTML Dom使用选择器在HTML上寻找标签,就像jQuery
  • 只需一行中就可从HTML抓取数据
  • 没有其它库速度快
  • 使用MIT许可证

[/*]
[*]
特点:
[list=square]
[*]
它支持无效的网页抓取[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
需要PHP 5+[/*]
[/list]
[/*]
[*]
说明:
[list=square]
[*]
http://simplehtmldom.sourceforge.net/manual.htm[/*]
[/list]
[/*]
[*]
更多内容:
[list=square]
[*]
http://www.prowebscraper.com/blog/web-scraping-using-php/[/*]
[/list]
[/*]
[/list]
  3. htmlSQL
 
  • 说明:[list=square][*]目前还是一个实验性的PHP库,你可以使用类似SQL的语法访问HTML页面的值
  • 无需编写复杂的函数或正则表达式即可获取指定HTML值
  • 如果你喜欢SQL,那么相信你也会喜欢这个库
  • 可以将其用于各种杂项任务快速解析网页
  • 基于BSD许可证

[/*]
[*]
特点:
[list=square]
[*]
它提供了相对较快的解析,但是功能有限[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
PHP4 +以上版本均正常运行[/*]
[*]
配合Snoopy 1.2.3(可选-网络传输用)。[/*]
[/list]
[/*]
[*]
说明文档:
[list=square]
[*]
https://github.com/hxseven/htmlSQL[/*]
[/list]
[/*]
[*]
更多:
[list=square]
[*]
https://github.com/hxseven/htmlSQL/tree/master/examples[/*]
[/list]
[/*]
[/list]
  4. cURL
 
  • 描述:[list=square][*]cURL是公认用于从网页提取数据最受欢迎的库之一(已内置在PHP扩展)
  • 由于它是标准化的PHP库,无需包含第三方文件和类

[/*]
[*]
要求:
[list=square]
[*]
要使用PHP的cURL函数,需安装libcurl,需要libcurl版本7.10.5或更高版本[/*]
[/list]
[/*]
[*]
说明文档:
[list=square]
[*]
http://php.net/manual/ru/book.curl.php[/*]
[/list]
[/*]
[*]
查看更多:
[list=square]
[*]
http://scraping.pro/scraping-in-php-with-curl/   [/*]
[/list]
[/*]
[/list]
  5.Request
 
  • 描述[list=square][*]Request是用纯PHP编写的HTTP库
  • 它基于出色的 Python库中的Requests API
  • 可以发送HEAD,GET,POST,PUT,DELETE和PATCH等HTTP请求
  • 借助Request,可以添加自定义header,表单数据,多段文件和带有简单数组的参数,以及访问动态响应数据
  • 基于ISC许可证

[/*]
[*]
特点:
[list=square]
[*]
支持SSL验证[/*]
[*]
基本/摘要身份验证[/*]
[*]
自动解压缩[/*]
[*]
连接超时处理[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
需要PHP版本5.2+[/*]
[/list]
[/*]
[*]
说明文件:
[list=square]
[*]
https://github.com/rmccue/Requests/blob/master/docs/README.md[/*]
[/list]
[/*]
[/list]
 
 6. HTTPful
 
  • 说明:[list=square][*]HTTPful是一个简单的PHP库。因为它可链接亦可读,它的目标就是使HTTP更有可读性。 
  • 它让开发人员专注于与API交互,而不必浏览curl set_opt页面。它的PHP REST客户端也很稳定
  • 使用MIT许可证

[/*]
[*]
特征:
[list=square]
[*]
可读的HTTP支持(GET,PUT,POST,DELETE,HEAD,PATCH和OPTIONS)[/*]
[*]
可自定义 Header[/*]
[*]
自动“智能化”解析。[/*]
[*]
自动有效载荷序列化。[/*]
[*]
基本验证[/*]
[*]
客户端证书验证[/*]
[*]
支持请求“模板”。[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
PHP版本5.3+[/*]
[/list]
[/*]
[*]
说明文件:
[list=square]
[*]
http://phphttpclient.com/docs/[/*]
[/list]
[/*]
[/list]
 
 7. Buzz
 
  • 描述:[list=square][*]Buzz非常有用,它是一个轻量级的库,可轻松发出HTTP请求
  • 设计简单,具有Web浏览器特性
  • 使用MIT许可证

[/*]
[*]
特征:
[list=square]
[*]
API简单[/*]
[*]
性能高[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
需要PHP版本7.1以上[/*]
[/list]
[/*]
[*]
说明文件:
[list=square]
[*]
https://github.com/kriswallsmith/Buzz/blob/master/doc/index.md[/*]
[/list]
[/*]
[*]
学到更多:
[list=square]
[*]
https://github.com/kriswallsmith/Buzz/tree/master/examples[/*]
[/list]
[/*]
[/list]
 
 8.Guzzle
 
  • 说明:[list=square][*]Guzzle非常有用,因为它是一个PHP HTTP客户端,使您可以轻松地发送HTTP请求,它与Web服务集成也很容易

[/*]
[*]
特点:
[list=square]
[*]
有一个简单的界面,可帮助构建查询字符串,POST请求,流式传输大文件,流式传输下载文件,使用HTTP cookie,上传JSON数据等[/*]
[*]
可以在同一接口的帮助下发送同步和异步请求[/*]
[*]
它利用PSR-7接口处理请求,响应和流。这使您可以在Guzzle中使用其他PSR-7兼容的库[/*]
[*]
它可以抽象出底层的HTTP传输,使您能够编写环境并传输不可知代码。即对cURL,PHP流,套接字或非阻塞事件循环没有强依赖[/*]
[*]
中间件系统能够增强客户端行为[/*]
[/list]
[/*]
[*]
要求:
[list=square]
[*]
需要PHP 5.3.3+以上版本。[/*]
[/list]
[/*]
[*]
说明文档:
[list=square]
[*]
http://docs.guzzlephp.org/en/stable/[/*]
[/list]
[/*]
[*]
更多内容:
[list=square]
[*]
https://lamp-dev.com/scraping-products-from-walmart-with-php-guzzle-crawler-and-doctrine/958 
 [/*]
[/list]
[/*]
[/list]
以上绍这些可用的Web抓取工具,根据自己的Web抓取需求,确定哪种工具适合自己。
 
有任何补充,欢迎各位留言。
 

作者:海鹏