【问题标题】:How to extract specific text from a webpage? [duplicate]如何从网页中提取特定文本? [复制]
【发布时间】:2011-11-19 18:49:09
【问题描述】:

我正在尝试从网页中提取特定文本?

这是包含特定文本的网页部分:

<div class="module">
<div class="body">
<dl class="per_info">
<dt>F.Name:</dt>
<dd><a class="nm" href="http://">a Variable Name1</a></dd>
<dt>L.Name:</dt>
<dd><a class="nm" href="http://">a Variable Name2</a></dd>
</dl>
</div>
</div>

如何提取变量名1和变量名2的内容?

是否有任何 html 解析器可以进行这种提取?

【问题讨论】:

  • +1:终于有人要求解析器来解析HTML而不是要求正则表达式。
  • 另一个 +1 不要求正则表达式。

标签: java text extract webpage


【解决方案1】:

jsoup 是一个可以解析 HTML 并提取元素数据的 Java 库。要使用 jsoup,首先通过从文件、URL、整个文档字符串或 HTML 片段字符串中解析它来创建一个 jsoup 文档。 HTML fragment 示例类似于:

String html = "<div class='module'>" +
    "<div class='body'>" +
    "<dl class='per_info'>" +
    "<dt>F.Name:</dt>" +
    "<dd><a class='nm' href='http://'>a Variable Name1</a></dd>" +
    "<dt>L.Name:</dt>" +
    "<dd><a class='nm' href='http://'>a Variable Name2</a></dd>" +
    "</dl>" +
    "</div>" +
    "</div>";
Document doc = Jsoup.parseBodyFragment(html);

有了文档,可以使用jsoup的selectors定位具体元素:

// select all <a/> elements from the document
Elements anchors = doc.select("a")

使用元素集合,您可以迭代元素并提取其元素内容:

for (Element anchor : anchors) {
    String contents = anchor.text();
    System.out.println(contents);
}

【讨论】:

    【解决方案2】:

    TagSoup 是一个符合 SAX 的解析器,能够解析在“wild”中找到的 HTML。所以不需要格式良好的 XML。

    【讨论】:

      【解决方案3】:

      好吧,你可以试试 Selenium,它以 DOM 感知的方式将 html 页面加载到你的 java 代码中,这样你就可以根据 id、xpath 等选择 HTML 元素的内容。

      http://seleniumhq.org/

      【讨论】:

        猜你喜欢
        • 2011-08-05
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 2014-07-24
        • 2020-06-17
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多