【问题标题】:Jsoup: take text and urlJsoup:获取文本和网址
【发布时间】:2015-08-08 10:59:58
【问题描述】:

我有这个 HTML 块:

<div class="singolo-contenuto link_azure">
<p>I'm a TEXTXXXXXXXXXXXXXXXX<p>
<a href="http://example.com">Name of URL</a></p></p>
<ul class="list_attachments"><li><a    
href="DON'T TOUCH"><img src='/img/fileicons/file.png' alt='file'/> TITLE</a></li></ul> 
</div>
<div class="clear"></div>

实际上我正在接受文本:

 document.select(".singolo-contenuto").text();

这又回到了我身边: “我是 TEXTXXXXXXXXXXXXXXXX 网址的名称”。无法获取“我是 TEXTXXXXXXXXXXXXXXXX http://example.com URL 名称”吗?

在所有页面中并不总是相同的。 我只确定 text 和 href 将在 ""singolo-contenuto link_azure" 类中。

【问题讨论】:

  • This post 将有助于您获取锚标签的href 信息。虽然我不确定您是否可以直接在您的 div.text() 通话中强制执行此操作。之后您可以进行单独的调用并操作字符串。
  • 从技术上讲,href 不是文本,而是标记的一部分。

标签: java android html html-parsing jsoup


【解决方案1】:

您可以根据需要用文本替换所有链接,然后调用 .text()

伪代码:

for (Element elem : document.select(".singolo-contenuto a")) {
    if(elem.parents().hasClass("list_attachments")) continue;
    String href = elem.attr("href");
    String text = elem.text();
    elem.replaceWith(new TextNode(href + " " + text, ""));
}
String result = document.select(".singolo-contenuto").text();

【讨论】:

  • 感谢您的建议,但通过这种方式,我也采用了内部类“list_attachments”中的链接。有没有办法为“.list_attachments”选择(“.singolo-contenuto a”)例外?
  • 可以由选择器完成取决于您的文档结构,即.singolo-contenuto a:not(.list_attachments).singolo-contenuto :not(.list_attachments) ahttp://jsoup.org/apidocs/org/jsoup/select/Selector.html
  • 感谢您的耐心等待。我用完整的结构编辑了我的第一篇文章,但你的建议不起作用。
  • 阅读 html 选择器。将以上两者合并为一个.singolo-contenuto a:not(.list_attachments), .singolo-contenuto :not(.list_attachments) a
  • 仍然不起作用:(我正在阅读选择器..感谢您的建议。
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
相关资源
最近更新 更多