如何从网页中提取特定文本?

时间:2011-09-18 18:38:22

标签: java text extract webpage

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

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

<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 个答案:

答案 0 :(得分:0)

好吧,您可以尝试使用Selenium,它会以支持DOM的方式将html页面加载到您的Java代码中,以便之后您可以根据id,xpath等选择HTML元素的内容。

http://seleniumhq.org/

答案 1 :(得分:0)

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

答案 2 :(得分:0)

jsoup是一个Java库,可以解析HTML并提取元素数据。要使用jsoup,首先要通过从文件,URL,整个文档字符串或HTML片段字符串中解析来创建jsoup Document。 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);
}