PHP 网络爬虫,检查 URL 路径

PHP web crawler, check URL for path

我正在编写一个简单的网络爬虫来从站点抓取一些 link。 我需要检查 returned links 以确保我有选择地收集我想要的东西。

例如,这里有一些 links returned from http://www.polygon.com/

[0] http://www.polygon.com/2015/5/15/8613113/destiny-queens-wrath-bounties-ether-key-guide#comments

[1] http://www.polygon.com/videos

[2]http://www.polygon.com/2015/5/15/8613113/destiny-queens-wrath-bounties-ether-key-guide

[3] http://www.polygon.com/features

所以link0和2是link我要抢,1和3我们不要。 link 之间有明显的视觉区别,那么我如何比较它们呢?

我如何检查以确保我没有 return 1 和 3?理想情况下,我希望能够输入一些内容,以便它可以适应任何站点。

我想我需要检查 link 以确保它过去的 /2015/ 等等,但我很迷茫。

这是我用来抓取 link 的 PHP 代码:

<?php

$source_url = 'http://www.polygon.com/';
$html = file_get_contents($source_url);
$dom = new DOMDocument;
@$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');

foreach ($links as $link) {
    $input_url = $link->getAttribute('href');
    echo $input_url . "<br>";   
}
?>

看起来正则表达式在这里很有用。 例如,您可以说:

/* if $input_url contains a 4 digit year, slash, number(s), slash, number(s) */
if (preg_match("/\/20\d\d\/\d+\/\d+\/",$input_url)) {
  echo $input_url . "<br>";
}