php 网站爬虫入门 - Goutte

更新日期: 2018-01-24 阅读次数: 8367 分类: 爬虫

不使用 python scrapy 的原因

虽然我用 python 写爬虫已有多年,但是我越来越想尝试一下用 PHP 来写个爬虫

  • 厌恶了 python 的包管理
  • scrapy 对于小爬虫来说太繁琐了
  • python 的 ORM 相对 PHP laravel 的 eloquent 都像是半成品

当然 scrapy 也有不可替代的功能

  • 调试 console,这个无人可替代。chrome console XPath?

PHP 的爬虫库

https://github.com/BruceDone/awesome-crawler

Goutte 看上去不错,但是活跃度太低,一年也没几次提交。

不过,他的主要功能是基于 BrowserKit 和 DomCrawler 这两个库实现的。这两个库还算活跃。

Goutte 的娱乐小八卦

  • goutte - 痛风
  • guzzle - 狂饮 (guzzle 是 PHP 的一个 HTTP 库)

狂饮导致痛风。。。醉了。goutte 这个名字起得真是太潇洒了。。。

使用 Goutte 爬取大象笔记的标题

composer require fabpot/goutte

安装好 goutte 之后,编写逻辑代码

<?php

require __DIR__ . '/vendor/autoload.php';

use Goutte\Client;

$client = new Client();
$crawler = $client->request('GET', 'https://www.sunzhongwei.com');
$crawler->filter('h1')->each(function ($node) {
        print $node->text()."\n";
});

运行结果

% php go.php
大象笔记

Goutte 默认的请求头

"GET / HTTP/1.1" 200 34881 "-" "Symfony BrowserKit"

更复杂一点的爬虫

例如,爬取搜索引擎的搜索结果。

真实感受是,PHP 做起来太痛苦了。举个例子

  • 当对象属性未知时,远不如 python 的 dir 好用
  • 爬取结果去重,python set 一行搞定,这 php ...

试了一把,我还是决定使用 python requests + beautifulsoup。

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

谈笑风生

Take

兄弟通风怎么样了?  有什么好药。

爱评论不评论

近期节日

2019年12月07日 大雪
2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
2019年12月13日 南京大屠杀
2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日