【问题标题】:Extracting a Link from within a JSoup <a> Tag with Attributes从具有属性的 JSoup <a> 标记中提取链接
【发布时间】:2015-04-10 18:50:35
【问题描述】:

在 HTML 文档中,我有以下标签

<a id="myUniqueID" class="myClassName" href="/uniqueURLToExtract" data-original-title"">This is a Title</a>

我正在使用 JSoup,并希望提取包含在由 myUniqueID 标识的 href 中的 URL。在阅读了以下关于 SO 的主题后

  1. Jsoup - extracting data from an <a> tag, inside a <td> tag

  2. JSoup parsing data from within a tag

我想出了这个sn-p的代码

...
document = Jsoup.connect(mySiteAddress).timeout(10*1000).get();
...
String URLStr = document.select(a[id=myUniqueID]").text();

但这只是打印

This is a Title

我尝试了其他变体,但都没有成功。我要么什么都没打印,要么以空指针异常告终。

我不确定如何提取由&lt;a&gt; 标记中的 id myUniqueID 标识的 URL。

【问题讨论】:

  • 提前关闭的标签是错字吗? &lt;a&gt; id="myUniqueID" class="myClassName"...
  • 检查这个答案,我猜你需要什么:stackoverflow.com/a/6933687/2196341
  • @AdrianLynch 是的,这是一个错字。对于那个很抱歉。我在原始问题中解决了这个问题。
  • @TheUknown 感谢分享。

标签: java html jsoup


【解决方案1】:

试试:

String URLStr = document.select("a[id=myUniqueID]").attr("href");

所以attr() 超过text()

【讨论】:

  • 应该这样做 - 更多示例在这里 - Extract attributes, text, and HTML from elements
  • 谢谢!这做到了!也感谢您的链接!
  • 使用 URL 时,您通常希望使用 .attr("abs:href")。这样可以确保 URL 是绝对的,而不是相对的,无论源中的内容是什么。
【解决方案2】:

您想获取href 属性,而不是a 的文本:

String href = document.getElementById("myUniqueID").attr("href");

【讨论】:

  • 谢谢,但是当我以这种方式尝试时出现以下错误The method get(String) is undefined for the type Element
  • 错字,我的意思是attr
  • 酷!感谢您清除此问题。您的解决方案也有效。很高兴知道至少有几种方法可以解决这个问题。
  • 我喜欢getElementById,因为它返回Element,而document.select返回Elements
  • 好的。著名的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2018-03-02
  • 2018-01-27
相关资源
最近更新 更多