或者,如果您不喜欢http://phpcrawl.cuab.de/,您可以使用PHP-Spider。
这就像编写基于 CSV 的自定义 URL 发现器然后使用 XPath 查询解析抓取的页面一样简单。请参阅https://mvdbos.github.io/php-spider/上的示例。您唯一需要更改的是添加到 Spider 的 Discoverer 类。假设您知道 URL 是如何构建的,它可能如下所示:
class CsvModelNumberDiscoverer implements Discoverer
{
protected $modelNumbersAndTitles = array();
public function __construct(array $modelNumbersAndTitles)
{
$this->modelNumbersAndTitles = $modelNumbersAndTitles;
}
public function discover(Spider $spider, Resource $document)
{
$urls = array();
foreach ($this->modelNumbersAndTitles as $number => $title) {
$urls[] = 'http://example.com/' . $title . '-MN-' . $number . '.htm';
}
return $urls;
}
}
运行蜘蛛的代码如下所示:
$spider = new Spider('http://www.example.com');
$spider->addDiscoverer(new CsvModelNumberDiscoverer($modelNumbersAndTitles);
$result = $spider->crawl();
最后,您可以从结果中得到描述,如下所示:
foreach ($result['queued'] as $resource) {
$modelNo = $resource->getCrawler()->filterXpath("div[@id='modelNo']")->text();
$description = $resource->getCrawler()->filterXpath("div[@id='description']")->text();
}
如果您不知道 URL 是如何构建的,那么您将蜘蛛整个站点(如 AmazingDreams 的回答)并使用发现器将 URL 与型号列表匹配。不过这需要更多时间。
完全披露:我写了PHP-Spider。