我试图从各个网站解析出导航链接。从相对URL转换为绝对URL不正确Android JSoup
我一直有与使用同./
这里开头的相对格式中的一个特定部位的问题与相关PARAM值的代码片段中的注释:
// url = http://megatokyo.com/strip/1456
// selector = ".next a"
// ele = <a href="./strip/1457">Next</a>
// attr = "href"
Element ele = doc.select(selector).get(index);
ele.setBaseUri(url);
String absoluteUrl = ele.absUrl(attr).trim().replaceAll("\n", "");
Jsoup返回:
http://megatokyo.com/strip/strip/1457
其实真正的链接是:
http://megatokyo.com/strip/1457
Fro我的理解是Jsoup在这里给出了正确的链接,因为./
指的是当前目录(http://megatokyo.com/strip/
),这意味着该锚点在网站上的做法不正确。不过,Chrome,Firefox和IE都解析相对URL以指向下一个条带,而不是/strip/strip/1457
。有什么办法可以纠正这种行为,而不会在其他情况下破坏相对URL?
很好解释。不幸的是,我忘了给我的问题添加一个相关的信息 - 我没有使用Jsoup在这个实例中加载URL,只是解析出属性。因为这样的baseURI不是隐式设置的。除了使用选择器手动解析外,还有什么办法从这个文档(它包含完整的源文件)解析出baseURI? – alexgophermix
@alexgophermix好吧,想知道,为什么你不得不打电话给setBaseUri。更新了我的答案:只是解析基本标签的头部并对其进行处理。出于好奇:你为什么不使用jsoup来获取页面/你在用什么? –
我有一个异步网络任务,加载了各种回调和配置,并在整个应用程序的其他地方使用,不需要文件解析。可能还有改进的空间,但现在它正在工作中 – alexgophermix