我正在寻找一些强大、文档完备的PHP网络爬虫脚本。也许有一个Java项目的PHP移植版本 - http://wiki.apache.org/nutch/NutchTutorial
我需要免费和付费版本的选择。
https://github.com/fabpot/Goutte是一个兼容PSR-0标准的优秀库。
在我发现phpQuery之前,我使用了约3年的Simple HTML DOM。phpQuery更快,不会递归地工作(您实际上可以将其转储),并且完全支持jQuery选择器和方法。
这里有一个很棒的教程在这里,它结合了guzzlehttp和symfony/dom-crawler。
如果链接丢失,你可以使用以下代码。
use Guzzle\Http\Client;
use Symfony\Component\DomCrawler\Crawler;
use RuntimeException;
// create http client instance
$client = new GuzzleHttp\ClientClient('http://download.cloud.com/releases');
// create a request
$response = $client->request('/3.0.6/api_3.0.6/TOC_Domain_Admin.html');
// get status code
$status = $response->getStatusCode();
// this is the response body from the requested page (usually html)
//$result = $response->getBody();
// crate crawler instance from body HTML code
$crawler = new Crawler($response->getBody(true));
// apply css selector filter
$filter = $crawler->filter('div.apismallbullet_box');
$result = array();
if (iterator_count($filter) > 1) {
// iterate over filter results
foreach ($filter as $i => $content) {
// create crawler instance for result
$cralwer = new Crawler($content);
// extract the values needed
$result[$i] = array(
'topic' => $crawler->filter('h5')->text();
'className' => trim(str_replace(' ', '', $result[$i]['topic'])) . 'Client'
);
}
} else {
throw new RuntimeException('Got empty result processing the dataset!');
}
我知道这是一个有点陈旧的问题。自那时以来,许多有用的库已经出现了。
试试Crawlzone。它是一个快速、文档完整、异步网络爬行框架,具有许多强大的功能:
还可以看看我写的文章:
https://www.codementor.io/zstate/this-is-how-i-crawl-n98s6myxm