java - Jsoup如何检查一个元素是否有特定的子元素
问题描述
如何检查 div 元素是否有 span 元素作为子元素。
我有一个 html 页面有一个 col-md-6 类名的 div,div 本身有时有一个价格类的跨度,有时没有。
<div class="col-md-6">
<ul> <li>
<span class="price">
<strong class="bold">70,000 </strong>USD</span>
</li>
<li>
</li>
<li>8775 views </li>
</ul>
</div>
<div class="col-md-6">
<ul>
<li>
</li>
<li>yesterday</li>
<li>53 views</li>
</ul>
</div>
try
{
Document doc = Jsoup.connect("https://www.bezaat.com/ksa/riyadh/سيارات/all").userAgent("Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").referrer("http://www.google.com").ignoreHttpErrors(true).get();
Elements EE = doc.select("div.col-md-12").select("div.col-md-6") ;
Elements E = doc.select("div.col-md-12").select("div.media.ads-style.reg").select("div.media-left");
for(int i = 0;i < E.size();i++)
{
if(EE.get(i).select("span.price").text() != null)
{
System.out.println(EE.get(i).select("span.price").text().replaceAll("[^0-9]",""));
}
else
{
System.out.println("0");
}}
}
catch(java.io.IOException e)
{
e.printStackTrace();
}
解决方案
您需要的选择器是div.col-md-6 span[class=price]
- 找到一个div
with 类col-md-6
,然后寻找一个span
命名的后代price
- 注意查询的两个部分之间的空格!
示例代码 -
String html1 = "<div class=\"col-md-6\">" +
"<ul> <li> " +
"<span class=\"price\">" +
"<strong class=\"bold\">70,000 </strong>USD</span> " +
"</li>" +
"<li> " +
"</li>" +
"<li>8775 views </li> " +
"</ul>" +
"</div>";
String html2 = "<div class=\"col-md-6\">" +
"<ul>" +
"<li>" +
"</li>" +
"<li>yesterday</li>" +
"<li>53 views</li>" +
"</ul>" +
"</div>";
Document doc1 = Jsoup.parse(html1);
Elements price1 = doc1.select("div.col-md-6 span[class=price]");
if (price1.size() > 0)
System.out.println(price1.html());
else
System.out.println("not found in html1");
Document doc2 = Jsoup.parse(html2);
Elements price2 = doc2.select("div.col-md-6 span[class=price]");
if (price2.size() > 0)
System.out.println(price2.html());
else
System.out.println("not found in html2");
和输出 -
<strong class="bold">70,000 </strong>USD
not found in html2
推荐阅读
- api - .NET Core DI 将 AddHttpContextAccessor 的信息传递给服务
- r - 在条形图中显示特定值
- javascript - jQuery.Deferred 异常:无法设置未定义的属性“值”类型错误:无法设置未定义的属性“值”
- javascript - 如何使用 AWS CodePipeline 缩小 JS
- python - Python Pub/Sub 脚本上的 JSONDecodeError
- python - 可靠地将大文件上传到 Google Drive
- java - f:selectItem 中的枚举:如何将选定的值传递给 bean?
- python - 按“确定/确认”后,Tkinter 消息框不会消失
- python - Nginx - 如何在 Django 的渲染页面上提供受保护的视频,而不是强制下载?
- flutter - mac桌面上颤动“未检测到设备”