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>";
}
我正在编写一个简单的网络爬虫来从站点抓取一些 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>";
}