2011-09-18 86 views
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

+1:最後有人要求*解析器*解析HTML而不是詢問正則表達式。 –

+0

另一個+1不要求正則表達式。 – stratwine

回答

0

好了,你可以試試硒,它加載HTML頁面Java代碼在DOM感知方式,這樣,以後將根據ID,XPath的等

http://seleniumhq.org/挑HTML元素的含量

0

TagSoup是一個SAX兼容的解析器,它能夠解析在「wild」中找到的HTML。所以不需要格式良好的XML。

0

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); 
}