[英]Nested html not being parsed by Jsoup
我正在嘗試使用Jsoup解析頁面,但是html似乎無法正確解析。
總體結構為:
<html>
<head> ... </head>
<frameset ...>
<frame ...>
#document
<html> ... </html>
</frame>
</frameset>
</html>
當我解析html並將其打印時
Document doc = Jsoup.parse(html); System.out.println(doc.html());
它打印出外部html(包括#document,但不包括框架或內部html)。
有誰知道如何使用Jsoup獲取內部html,還是應該考慮使用其他庫? 謝謝。
編輯:這是我正在解析的站點。 我已經訂閱了; 不知道會不會讓你們中的任何一個進入。
http://database.asahi.com/library2/login/login.php
身份驗證后,它將帶您到: http : //database.asahi.com/library2/main/start.php
編輯2:
<html>
<head></head>
<frameset rows="58,*" border="0">
<frame name="Header"> </frame>
<frame name="Introduce">
#document
<html>
<head>hello</head>
<body>hello again</body>
</html>
</frame>
</frameset>
</html>
然后我運行:
Document doc = Jsoup.parse(html);
Elements elems = doc.select("frameset > frame:last-child");
// print(elems);
switch(elems.size()) {
case 0: break;
case 1: doc = Jsoup.connect(elems.first().attr("src")).get(); break;
default: break;
}
System.out.println(doc.html());
解析的html(doc.html()):
<html>
<head></head>
<body>
 #document hello hello again
</body>
</html>
所以甚至都找不到<frameset>
有任何想法嗎?
這是解析嵌套html的方法:
// Fetch the page with frameset
Document doc = Jsoup
.connect("http://database.asahi.com/library2/login/login.php")
.get(); // Add login, password etc
// Determine the frame url you want to parse...
// Note: I assume you want to parse the content of the first frame
Elements elts = doc.select("frameset > frame:first-child");
switch (elts.size()) {
case 0:
// No frame found ...
break;
case 1:
Element frameElt = elts.first();
Document frameDoc = Jsoup
.connect(frameElt.attr("src"))
.get();
// Add the frameDoc nodes to doc (via frameElt#insertChildren)
frameElt.insertChildren(0, frameDoc.childNodes());
break;
default:
// Strange result...
}
System.out.println(doc.html());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.