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

时间:2013-08-19 13:43:14

标签: php html dom web-scraping

从PHP中,如何通过仅知道其名称/描述文本来获取某个href的URL?例如,如何通过搜索字符串“站点地图”从Apples主页获取站点地图的URL?

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

高度赞赏任何有关如何解决这个问题的想法。

2 个答案:

答案 0 :(得分:0)

也许使用正则表达式?

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

答案 1 :(得分:0)

在对另一个答案做出否定评论之后,我不想提出自己的答案,但这个问题看起来对很多人来说可能不太感兴趣。

在HTML中,网址经常如下所示:

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

所以,你需要的是url标签的href属性。

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

要解析页面,DOM Parsing库是最佳选择。 Here is a good answer listing many options。研究其中一些。

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

W3Schools has a pretty good XPath tutorial