从PHP中,如何通过仅知道其名称/描述文本来获取某个href的URL?例如,如何通过搜索字符串“站点地图”从Apples主页获取站点地图的URL?
因此,在开始时我只知道我想要抓取的网站(例如www.apple.com)和我感兴趣的网址描述符(例如“网站地图”)。解决方案的正确输出应为:http://www.apple.com/sitemap/
高度赞赏任何有关如何解决这个问题的想法。
答案 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库。