0

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

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

任何关于如何解决这个问题的想法都非常感谢。

4

2 回答 2

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);
于 2013-08-19T14:55:49.363 回答
0

在对另一个答案发表否定评论后,我不喜欢提出自己的答案,但是对于许多人来说,这个问题看起来可能兴趣不大。

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

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

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

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

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

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

W3Schools 有一个非常好的 XPath 教程

于 2013-08-19T20:22:14.953 回答