我正在使用名为php-spider的精彩脚本,目的是从一些网站上抓取标题、描述、H1、H2、H3 和 H4。作为配置脚本的一部分,有必要设置一个“XpathExpressionDiscoverer”来指示脚本如何在每个页面上找到额外的超链接以进行抓取。我假设这是指标准的 Xpath 查询语言。
我的目标是找到一个通常适用于大多数网站的 XpathExpressionDiscoverer(而不是要求我为每个站点自定义它)。
这是我尝试过的:
我注意到作者提供的示例使用非常具体的 XpathExpressionDiscoverer 来抓取给定的示例站点:
// The URI we want to start crawling with
$seed = 'http://dmoztools.net/Computers/Internet/';
// We add an URI discoverer. Without it, the spider wouldn't get past the seed resource.
$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//*[@id='cat-list-content-2']/div/a"));
由于我的目标只是发现页面上的任何超链接,因此我尝试将 XPath 扩展为更通用的内容(“//a”),如下所示:
// We add an URI discoverer. Without it, the spider wouldn't get past the seed resource.
$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//a"));
虽然这个新的 Xpath 成功地抓取了示例站点 (dmoztools.net),但它似乎不适用于我尝试的其他示例(如下)。它只是抓取种子页面,但无法发现或抓取页面上的其他 URI(即使它们具有应与 Xpath 匹配的 A HREF 标记)。
示例 A:https ://www.petco.com/shop/en/petcostore/category/fish
示例 B:https ://www.thetruthaboutcars.com/
你碰巧看到我要去哪里错了吗?谢谢!
慕后森