tba*_*bag 9 html java parsing jsoup
我想使用JSoup从HTML中选择具有特定文本的元素.html是
<td style="vertical-align:bottom;text-align:center;width:15%">
<div style="background-color:#FFDD93;font-size:10px;margin:5px auto 0px auto;text-align:left;" class="genbg"><span class="corners-top-subtab"><span></span></span>
<div><b>Pantry/Catering</b>
<div>
<div style="color:#00700B;">✓ Pantry Car Avbl
<br />✓ Catering Avbl</div>
</div>
<div>
<div><span>Dinner is served after departure from NZM on 1st day.;</span>...
<br /><a style="font-size:10px;color:Red;" onClick="expandPost($(this).parent());" href="javascript:void(0);">Read more...</a>
</div>
<div style="display:none;">Dinner :2 chapati, rice, dal and chicken curry (NV) and paneer curry in veg &Ice cream.; Breakfast:2 bread slices with jam and butter. ; Omlet of 2 eggs (Non veg),vada and sambar(veg)..; coffee & lime juice</div>
</div>
</div><span class="corners-bottom-subtab"><span></span></span>
</div>
Run Code Online (Sandbox Code Playgroud)
我想找到包含文本"Pantry/Catering"的div元素.我试过了
doc.select("div:contains(Pantry/Catering)").first();
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.如何使用Jsoup获取此元素?
小智 14
当我运行你的代码时,它选择外部div,而我假设你要寻找的是内部div.该文件说,它选择了"包含指定文本元素".在这个简单的html中:
<div><div><b>Pantry/Catering</b></div></div>
Run Code Online (Sandbox Code Playgroud)
选择器div:contains(Pantry/Catering)匹配两次,因为它们都包含文本'Pantry/Catering':
<!-- First Match -->
<div><div><b>Pantry/Catering</b></div></div>
<!-- Second Match -->
<div><b>Pantry/Catering</b></div>
Run Code Online (Sandbox Code Playgroud)
匹配总是按顺序排列,因为jsoup来自外部.因此.first()始终匹配外部div.要提取div你可以使用的内在.get(1).
div完整地提取内部:
doc.select("div:contains(Pantry/Catering)").get(1)
Run Code Online (Sandbox Code Playgroud)
好.弄清楚了.不得不做类似的事情
doc.select("b:contains(Pantry/Catering)").first().parent().children().get(1).text();
谢谢您的帮助!
这也应该为您完成工作:
doc.selectFirst("div:containsOwn(Pantry/Catering)").text();
Run Code Online (Sandbox Code Playgroud)
解释:
selectFirst(selector) - 有助于避免使用 select().first()
containsOwn(text) - 一个伪选择器,用于返回直接包含指定文本的元素。文本必须出现在找到的元素中,而不是与 contains(text) 相反的任何其后代。
来源:https : //jsoup.org/apidocs/org/jsoup/select/Selector.html#selectFirst-java.lang.String-org.jsoup.nodes.Element-
| 归档时间: |
|
| 查看次数: |
21466 次 |
| 最近记录: |