我想做什么:使用简单HTML DOM从页面中查看所有链接,同时注意获取完整链接(即从http://
一直到结束地址)。
我的问题:我收到/wiki/Cell_wall
而不是http://www.wikipedia.com/wiki/Cell_wall
的链接。
更多示例:如果我抓取网址:http://en.wikipedia.org/wiki/Leaf
,我会收到/wiki/Cataphyll
和//en.wikipedia.org/
等链接。或者如果我正在抓取http://php.net/manual/en/function.strpos.php
,我会收到function.strripos.php
之类的链接。
我尝试了很多不同的构建实际完整网址的技巧,但是有很多可能的情况让我完全不知道如何覆盖所有基础。
但是,我确定之前有很多人遇到过这个问题 - 这就是我转向你的原因!
PS我认为这个问题几乎可以简化为只处理本地href
,但如上所述,我遇到//en.wikipedia.org/
这不是一个完整的网址,但却不是本地
答案 0 :(得分:1)
我认为这就是你要找的东西。它对我来说是一个古老的项目。
http://www.electrictoolbox.com/php-resolve-relative-urls-absolute/
答案 1 :(得分:1)
您需要一个将相对网址转换为绝对网址的库。 URL To Absolute似乎很受欢迎。那你就是:
require('url_to_absolute.php');
foreach($doc->find('a[href]') as $a){
echo url_to_absolute('http://en.wikipedia.org/wiki/Leaf', $a->href) . "\n";
}
有关库的列表,请参阅PHP: How to resolve a relative url。
答案 2 :(得分:0)
我不知道这是否是你要找的,但这将为你提供执行页面的完整网址:
window.location.href
希望它有所帮助。
答案 3 :(得分:0)
好的,谢谢大家的意见。
我认为解决方案是使用正则表达式查找任何特定URL的webroot,然后只需将本地地址附加到此。
棘手的部分: 设计适用于所有域的正则表达式语句,包括它们的子域......