当我从一些页面中抓取内容时,该脚本给出了一个相对URL。是否有可能通过Simple HTML DOM获取绝对URL?使用Simple HTML DOM将相对URL转换为绝对URL?
3
A
回答
-3
0
除了@ Artefacto的答案,如果你是某个输出刮HTML,你可以简单地添加<base href="http://example.com">
到文档的头,这将建立基本URL中的所有相对URL文件为指定href
。看看http://www.w3schools.com/tags/tag_base.asp
12
我不认为Simple HTML DOM Parser可以做到这一点。
但是你可以自己做。首先,如果不另外声明,则需要区分作为文档URI的基本URI(请参阅BASE
element)。比得到每个URI引用并应用algorithms to resolve a relative URI as described in RFC 3986(已经有类可以用于像PEAR package Net_URL2那样的类)。
因此,使用这两个类,你可以做这样的事情:
$uri = new Net_URL2('http://example.com/foo/bar'); // URI of the resource
$baseURI = $uri;
foreach ($html->find('base[href]') as $elem) {
$baseURI = $uri->resolve($elem->href);
}
foreach ($html->find('*[src]') as $elem) {
$elem->src = $baseURI->resolve($elem->src)->__toString();
}
foreach ($html->find('*[href]') as $elem) {
if (strtoupper($elem->tag) === 'BASE') continue;
$elem->href = $baseURI->resolve($elem->href)->__toString();
}
foreach ($html->find('form[action]') as $elem) {
$elem->action = $baseURI->resolve($elem->action)->__toString();
}
重复替代含有一个URI像background
,cite
,classid
,codebase
,data
,longdesc
,profile
任何其他属性和usemap
(见index of attributes in HTML 4.01)。
+0
谢谢,我去试试吧。 – Jean 2010-07-25 15:06:49
相关问题
- 1. 将相对URL转换为绝对
- 2. 在Actionscript/Flex中将相对URL转换为绝对URL
- 3. SharePoint HTML编辑器字段控件将相对URL转换为绝对URL
- 4. 发布HTML字段控件将相对URL转换为绝对URL
- 5. 从相对URL转换为绝对URL不正确Android JSoup
- 6. 将相对URL应用于绝对URL
- 7. CssRewrite过滤器不会将相对url转换为绝对
- 8. 将URL转换为绝对路径
- 9. 将TinyMCE绝对禁用到相对URL转换
- 10. 相对URL绝对URL
- 11. 在vanilla JavaScript中,将相对路径+基本URL转换为绝对URL
- 12. 如何在wget中将相对URL更改为绝对URL
- 13. 更改相对URL绝对URL
- 14. 在目标C中将相对URL更改为绝对URL C
- 15. 将相对URL更改为绝对URL Curl
- 16. 将数组中的所有相对URL更改为绝对URL
- 17. URL重写和绝对/相对URL
- 18. 在绝对和相对URL上下文中使所有URL绝对绝对
- 19. 将绝对URL更改为相对URL使用系统API快速且干净?
- 20. 如何将相对URL转换为完整的URL?
- 21. 将MVC页面url从相对绝对替换
- 22. HTML强制URL超链接被视为非相对(绝对)
- 23. C#问题 - 如何将PageURI和Href转换为绝对URL/URI?
- 24. 将html转换为url scraper
- 25. 将绝对/相对(本地)路径映射到绝对URL
- 26. 绝对路径的相对URL
- 27. 使用codeigniter将ajax相对路径转换为绝对路径
- 28. php:转换绝对URL中的所有相关网址
- 29. 性能:绝对与相对URL
- 30. 用绝对路径URL替换相对路径网址
谢谢你的回答,但我该如何编写脚本。 – Jean 2010-07-25 14:24:15
谢谢大家,我试一试 – Jean 2010-07-25 14:32:11
@Jean这个概述了脚本的算法;如果您遇到更多困难,您可以发布后续问题。 – Artefacto 2010-07-25 14:35:32