从网页中提取特定文本的方法是什么?

3

我可以帮您从网页中提取特定的文本。

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

<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解析器可以进行此提取?

3
终于有人要求使用解析器来解析 HTML,而不是询问正则表达式了。 +1 - Roland Illig
又一个 +1,因为没有要求使用正则表达式。 - stratwine
3个回答

0

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

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的选择器来定位特定的元素:

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

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

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

0

嗯,你可以尝试使用Selenium,它以DOM感知的方式将HTML页面加载到你的Java代码中,这样之后你就可以根据id、xpath等选择HTML元素的内容。

http://seleniumhq.org/


0

TagSoup是一种符合SAX标准的解析器,能够解析在“野外”发现的HTML。因此,不需要格式良好的XML。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接