我在php中编写了一个网站爬虫,我已经有了可以从网站中提取所有链接的代码。 问题:站点使用绝对和相对URL的组合。 示例(http替换为hxxp,因为我无法发布超链接):
hxxp://site.com/
site.com
site.com/index.php
hxxp://site.com/hello/index.php
/hello/index.php
hxxp://site2.com/index.php
site2.com/index.php
我无法控制链接(如果它们是绝对/相对的),但我确实需要遵循它们。我需要将所有这些链接转换为绝对URL。我如何在PHP中执行此操作?
答案 0 :(得分:5)
这是一个开始
// Your crawler was sent to this page.
$url = 'http://example.com/page';
// Example of a relative link of the page above.
$relative = '/hello/index.php';
// Parse the URL the crawler was sent to.
$url = parse_url($url);
if(FALSE === filter_var($relative, FILTER_VALIDATE_URL))
{
// If the link isn't a valid URL then assume it's relative and
// construct an absolute URL.
print $url['scheme'].'://'.$url['host'].'/'.ltrim($relative, '/');
}
查看http_build_url方法作为创建绝对锚点的另一种方法。