说到爬虫,我们第一印象将会是 Python
。因其拥有丰富的网络抓取模块,语法简洁易上手,开发效率高等优点。
那么 PHP
如何开始爬虫之路呢,PHP
也有许多强大第三方库支持。比较著名的 PHP
爬虫框架就有 phpspider, PHP Selenium。
接下来我们将使用 Goutte
这个 PHP
的爬虫库来自己写创建一个简易的爬虫。
Goutte 是一个用于 PHP 的屏幕抓取和web爬行库。
Goutte 提供了一个很好的 API 来抓取网站并从 HTML/XML 响应中提取数据。
composer require fabpot/goutte
use Goutte\Client;
public function spider($url)
{
$client = new Client();
$crawler = $client->request('GET', $url);
// 这里我使用的是 Xpath
$name = $crawler->filterXPath('//div[@class="company-name"]')->text();
// 也可以使用 filter 选择器和 Jquery 一样,可以支持嵌套以及 each 循环
$navs = $crawler->filter('#menus li');
$navs->each(function ($node) {
echo $node->text().'<br>';
});
echo $name;
}
阅读 BrowserKit、DomCrawler 和 HttpClient Symfony 组件的文档,了解关于使用 Goutte
可以做什么的更多信息。
由于 BrowserKit 将在执行期间覆盖用户代理头,因此必须使用setServerParameter()
将用户代理头放回去。
$client = new Client();
$client->setServerParameter('HTTP_USER_AGENT','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36');
$client->setServerParameter('HTTP_ACCEPT_LANGUAGE','zh-CN,zh;q=0.9');
至此,分析一下需要抓取数据的规律,就可以去写一个自己的爬虫了。抓取一些简单的网站已经绰绰有余了。