|
|
51CTO旗下网站
|
|
移动端

八大神奇的网络爬取库与工具

在本文中,我们将和您探讨八种实用的网络爬取库与工具,以满足您直接抓取网站信息和数据的业务需求。

作者:陈峻编译来源:51CTO|2019-04-04 09:00

八大神奇的网络爬取库与工具

【51CTO.com快译】网络爬取(Web scraping,请详见:http://www.prowebscraper.com/blog/web-scraping-using-php/)是普通商业网站的常规功能之一。不同的网站在不同的应用场景下,会用到不同的爬取任务,其中包括:产品信息和股票价格等方面。

与此同时,在网站系统的后端开发中,网络爬取也是备受关注。在程序员的圈子内,您会经常听到:又有人开发创建了高质量的解析器或“爬虫”之类的新闻。

在本文中,我们将和您探讨一些实用的网络爬取库与工具,以满足您直接抓取网站信息和数据的业务需求。

在PHP环境中,您可以通过如下工具库,来进行与网络抓取相关的各项操作:

  1. Goutte
  2. Simple HTML DOM
  3. htmlSQL
  4. cURL
  5. Requests
  6. HTTPful
  7. Buzz
  8. Guzzle

1. Goutte

简介:

  • Goutte库的神奇之处在于:它可以为您提供如何通过使用PHP技术,来抓取各种内容的详细支持。
  • 基于Symfony框架的Goutte,是一种网站爬取类别的专用工具库。
  • Goutte的实用之处在于:它不但提供了各种可用来抓取网站信息的API,而且能够从HTML和XML的响应信息中抓取各种数据。
  • Goutte持有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

简介:

  • HTML DOM解析器是由PHP 5以上的版本编写而成。其优势在于:能够让您轻松、便捷地通过访问和使用HTML,来开展工作。
  • 通过它,您可以像使用jQuery那样,快速地在HTML页面上找到那些带有选择器的标签。
  • 您可以仅使用一行HTML代码,来实现内容的抓取。
  • 与本文介绍到的其他工具库相比,它的运行速度并不算快。
  • Simple HTML DOM持有MIT颁发的许可证。

特征:

  • 它能够支持那些无效的HTML。

环境要求:

需要具有PHP 5以上的环境。

文档链接:

http://simplehtmldom.sourceforge.net/manual.htm

扩展阅读:

http://www.prowebscraper.com/blog/web-scraping-using-php/

3. htmlSQL

简介:

  • 它实际上是一个实验性的PHP库。它的实用之处在于:通过它,您能够使用类似SQL的语法,去访问HTML的各种数值。因此,您可以在不需要编写复杂的函数、或正则表达式的情况下,方便地获取某些特定值。
  • 如果您是SQL的忠实粉丝,那么您一定也会喜欢这款实验性的爬取库。
  • 您可以将它运用到任何类型的杂项任务、以及对于网页的快速解析任务之中。
  • 虽然早在2006年就停止了更新与支持,但是htmlSQL仍然是一款可靠的解析工具和抓取库。
  • htmlSQL持有BSD颁发的许可证。

特征:

  • 它能够提供相对快速的解析访问,但功能比较有限。

环境要求:

  • 各种风格的PHP 4以上环境。
  • Snoopy的PHP类(版本1.2.3,需选用Web传输)。

文档链接:

https://github.com/hxseven/htmlSQL

扩展阅读:

https://github.com/hxseven/htmlSQL/tree/master/examples

4. cURL

简介:

  • 众所周知,cURL是一款非常流行的、可用于从网页中提取数据的工具库。它属于PHP的内置组件。
  • 作为一个标准的PHP库,它并不包含任何第三方的文件和类。

环境要求:

  • 在使用PHP的cURL功能时,您只需要安装»libcurl包(请详见http://curl.haxx.se/)便可。当然,作为PHP,它需要用到libcurl的7.10.5或更高版本。

文档链接:

http://php.net/manual/ru/book.curl.php

扩展阅读:

http://scraping.pro/scraping-in-php-with-curl/

5.Requests

简介:

  • 它是一个用PHP编写的HTTP库。
  • 它的API主要基于那些优秀的Requests Python库。
  • 您能够通过Requests来发送HEAD、GET、POST、PUT、DELETE以及PATCH HTTP等请求。
  • 通过Requests,您可以使用简单数组,来添加标题、表单数据、多个文件和参数、并能以相同的方式访问各种响应数据。
  • Requests持有ISC颁发的许可证。

特征:

  • 持有国际域名和URL。
  • 支持浏览器式的SSL验证。
  • 提供基本和摘要式的身份验证。
  • 自解压功能(Automatic Decompression)。
  • 连接超时管理。

环境要求:

需要具有PHP 5.2以上的版本。

参考文档:

https://github.com/rmccue/Requests/blob/master/docs/README.md

6. HTTPful

简介:

  • HTTPful是一个非常简单的PHP库。由于其设计初衷是使得HTTP具有可读性,因此它本身既可以被作为链接,又具备一定的可读性。
  • 它被公认为非常实用的原因在于:它使得开发人员专注于与API的交互,而不必去关注那些set_opt页面。同时,它也是一款十分优秀的PHP REST客户端。
  • HTTPful持有MIT颁发的许可证。

特征:

  • 可读式地支持多种HTTP方法(GET、PUT、POST、DELETE、HEAD、PATCH和OPTIONS)。
  • 可自定义标题(Headers)。
  • 能够自动且“智能”地进行解析。
  • 能够自动进行载荷的序列化(Payload Serialization)。
  • 支持基本认证。
  • 提供客户端证书的身份验证。
  • 带有请求的“模板”。

环境要求:

需要具有PHP 5.3以上的版本。

文档链接:

http://phphttpclient.com/docs/

7.Buzz

简介:

  • Buzz是一种实用的轻量级工具库,您可以用它来发出HTTP请求。
  • 虽然Buzz的设计比较简单,但是它具有各种Web浏览器的特性。
  • Buzz持有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

简介:

  • 作为一款非常实用的PHP HTTP客户端,Guzzle能够让您以简单的方式发送各种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

结论

综上所述,每一种网络爬取工具都具有自己的特点和环境要求。希望上述罗列能够帮助您更好地了解这些PHP库与工具。您可以从中挑选出适合于自己网站系统的工具进行试用与调试。

原文标题:8 Awesome PHP Web Scraping Libraries and Tools,作者:Hiren Patel

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

防火墙大佬修炼手册

防火墙大佬修炼手册

网工达人必备
共20章 | 捷哥CCIE

304人订阅学习

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

222人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

84人订阅学习

读 书 +更多

计算机网络原理与实践标准教程

本书深入浅出地阐述了计算机网络技术的基本原理,介绍了当前常用的先进网络技术以及网络的实际应用知识。全书主要内容包括计算机网络概述、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客