2015-04-23 46 views
2

我想用Jsoup解析Html頁面。如何使用Jsoup從html頁面檢索代碼片段?

html.page

<html> 
<head></head> 
<body> 
    <div id="1">SomeText</div> 
    <script>(function(a, b)){var fjs = a.getElementsByTagNames(b)[0]; … }  
    </script> 
    <div class="class1">SomeText</div> 
    <div class="class2">SomeText</div> 
    <script>(function(c, d)){var fjs = c.getElementsByTagNames(d)[0]; … }  
    </script> 
    <div class="class3">SomeText</div> 
    <div class="class4">SomeText</div> 
</body> 
</html> 

爲了獲取一些信息,我寫的代碼:

File input = new File(filePath); 
PrintWriter writer = new PrintWriter(input, "UTF-8"); 
writer.write(document.getElementById("1").outerHtml() + "\n"); 
writer.write(document.getElementsByClass("class1").outerHtml() + "\n"); 
writer.write(document.getElementsByClass("class2").outerHtml() + "\n"); 
writer.flush(); 
writer.close(); 

文件的輸出內容是:

<div id="1">SomeText</div> 
<div class="class1">SomeText</div> 
<div class="class2">SomeText</div> 

接收輸出文件內容的最佳方式是什麼?

<div id="1">SomeText</div> 
<script>(function(a, b)){var fjs = a.getElementsByTagNames(b)[0]; … }  
</script> 
<div class="class1">SomeText</div> 
<div class="class2">SomeText</div> 
+1

你的HTML是有點壞,因爲沒有開''標籤和'」'是不是與'''相同的字符,這意味着解析器將優化'id =「1」'爲'id =「」1「」'所以也許改變你的編輯器使用'''。你也可以解釋你想達到什麼嗎?從你的問題中,我懷疑你想在''標籤中獲得代碼,但我不確定。 – Pshemo

+0

回答你自己的問題太棒了!爲了使其符合SO的格式,請將回答問題的部分移到實際答案中。不需要改變_accepted_的答案。在這裏(甚至鼓勵)回答你自己的問題是完全可以接受的。 – JonasCz

+0

感謝您的建議! – Dan

回答

0
File input = new File(filePath); 
PrintWriter writer = new PrintWriter(input, "UTF-8"); 
writer.write(document.getElementById("1").outerHtml() + "\n"); 
Elements scripts = document.getElementsByTag("script"); 
    for (Element script : scripts) { 
    if (script.data().startsWith("(function(a, b)")) { 
    writer.write(script.outerHtml() + "\n"); 
    } 
    } 
writer.write(document.getElementsByClass("class1").outerHtml() + "\n"); 
writer.write(document.getElementsByClass("class2").outerHtml() + "\n"); 
    writer.flush(); 
    writer.close(); 
相關問題