我正在寻找一些健壮的,记录良好的PHP Web爬虫脚本。也许是Java项目的PHP端口 - http://wiki.apache.org/nutch/NutchTutorial
我正在寻找免费和非免费版本。
答案 0 :(得分:4)
试试Snoopy。
摘录:“Snoopy是一个模拟Web浏览器的PHP类。它可以自动执行检索网页内容和发布表单的任务。”
答案 1 :(得分:4)
https://github.com/fabpot/Goutte也是一个兼容psr-0标准的好库。
答案 2 :(得分:2)
您可以使用PHP Simple HTML DOM Parser。它非常简单实用。
答案 3 :(得分:2)
在我发现phpQuery之前,我已经使用Simple HTML DOM大约3年了。它的速度要快得多,不能递归工作(实际上可以转储它),并且完全支持jQuery选择器和方法。
答案 4 :(得分:2)
有一个包含here和guzzlehttp
的greate教程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!');
}
答案 5 :(得分:1)
如果你正在考虑一个强大的基础组件而不是尝试http://symfony.com/doc/2.0/components/dom_crawler.html
令人惊讶的是,拥有像css选择器这样的功能。
答案 6 :(得分:1)
我知道这是一个有点老问题。从那时起,出现了许多有用的库。
给Crawlzone一个机会。它是一个快速,文档齐全的异步互联网爬行框架,具有许多强大的功能:
另请查看我写的关于它的文章:
https://www.codementor.io/zstate/this-is-how-i-crawl-n98s6myxm
答案 7 :(得分:-2)
没人提到wget是一个很好的起点?。
wget -r --level=10 -nd http://www.mydomain.com/
更多@ http://www.erichynds.com/ubuntulinux/automatically-crawl-a-website-looking-for-errors/