PHP:通过其URL描述符从HTML中获取URL



在PHP中,如何只知道某个href的名称/描述文本就可以获得该href的URL?例如,如何通过搜索字符串"网站地图"从苹果主页获取网站地图的URL?

因此,在开始时,我只知道我想抓取的网站(例如www.apple.com)和我感兴趣的URL描述符(例如"网站地图")。解决方案的正确输出应该是:http://www.apple.com/sitemap/

任何关于如何解决这一问题的想法都将受到高度赞赏。

可能使用正则表达式?

$url = 'http://www.apple.de';
$name = 'Site Map';
$content = file_get_contents($url);
if(preg_match('/<s*a[^>]*hrefs*=s*("([^"]+)"|'([^']+)')[^>]*>.*?'.$name.'.*?<s*/s*as*>/i',$content,$matches))
     print_r($matches);

在对另一个答案进行否定评论后,我不喜欢提出自己的问题,但这个问题对许多人来说可能不太感兴趣。

在HTML中,URL通常如下所示:

<a href="http://www.apple.com/sitemap/" >http://www.apple.com/sitemap/</a>

因此,您需要的是url标记的href属性。

有很多不同的方法可以做到这一点,而且这有点学术性,这可能就是为什么很少有其他人发布答案的原因。

要解析页面,DOM解析库是最好的选择。这里有一个很好的答案,列出了许多选项。研究其中的一些。

I、 就我个人而言,我喜欢使用基于XPath的DOM解析库,并且经常使用标准php预打包的DOMDocument库。

W3Schools有一个非常好的XPath教程。

最新更新