vlambda博客
学习文章列表

八款不错的PHP网页爬虫库

使用爬虫抓取内容是我们开发人员每天都要遇到的事情。从抓取任务来讲,会遇到不同的需求,比如抓取京东的定价或库存,抓取某网站的资讯等。 



在后端开发中,抓取爬虫非常流行,也有一些开发者在为人们开发高质量的解析器和抓取工具。在本篇文章中,我们就探索一些爬虫库,这些库对网站抓取以及存储数据都就有用的。


在PHP中,我们使用以下库进行数据和内容抓取:


  1. Goutte

  2. Simple HTML DOM

  3. html SQL

  4. cURL

  5. Request

  6. HTTPful

  7. Buzz

  8. 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抓取需求,确定哪种工具适合自己。


有任何补充,欢迎各位留言。



相关阅读: