【发布时间】:2015-09-25 00:33:16
【问题描述】:
我有一些代码可以获取页面的所有链接,但有些代码获取的链接看起来不像链接。例如,索引 0-4 获得了名为“javascript:void(0)”的链接,而索引 5 获得了一个只有“/”的空白链接。我该如何解决?谢谢。
$content = file_get_contents("http://bestspace.co"); //get content of page
$links = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; //set regular expression to get links
preg_match_all("/$links/siU", $content, $matches); //get all links on page and store in array $matches[2]
print_r($matches[2]);
数组内容
Array (
[0] => javascript:void(0)
[1] => javascript:void(0)
[2] => javascript:void(0)
[3] => javascript:void(0)
[4] => javascript:void(0)
[5] => /
[6] => /bestdeals
[7] => /about-us
[8] => /why-choose-us
[9] => /products
[10] => https://cloud.bestspace.co/clientarea.php
ect... );
【问题讨论】:
-
link对你来说是什么?这些是hrefs 的值。您可以修改正则表达式,使href的值以/或http开头。第 10 个值是唯一一个我认为是链接的值。 -
您是否希望它仅返回完全限定的 URL?请澄清您所说的“链接”是什么意思
-
@JesseFulton 我会说 6-10 都是链接。
-
/是一个完全有效的href...将带您到站点的根目录。除了javascript:void()之外的所有路径都是有效的网络路径 -
使用
array_filter删除以javacscript:开头的所有条目。
标签: javascript php hyperlink web-crawler permalinks