我想从此页面中选择一些超市产品信息:
http://www.angeloni.com.br/super/index?grupo=15022
为此我应该选择<ul>
个"lstProd "
标签:
如果类名是"lstProd"
,那将很容易,但问题是名称末尾的空格。我不能让Jsoup处理它。
我尝试了下面的代码和其他方法,但它总是得到一个空列表。
org.jsoup.nodes.Document document = Jsoup.connect("http://www.angeloni.com.br/super/index?grupo=15022").get();
org.jsoup.select.Elements list = doc.select("ul.lstProd ");
我想从html页面获取的代码片段:
<ul class="lstProd ">
<li>
<span class="cod">CÓD. 1341372</span>
<span class="lnkImgProd">
<a href="/super/produto?grupo=15022&idProduto=1341372">
<img src="http://assets.angeloni.com.br/files/images/7/1B/C6/1341372_1_V.jpg" width="120" height="120"
alt="Creme Dental SORRISO Super Refrescante Tubo 90g">
</a>
</span>
<div class="RgtDetProd">
<div class="boxInfoProd">
<span class="descr">
<a href="/super/produto?grupo=15022&idProduto=1341372">Creme Dental SORRISO Super Refrescante
Tubo 90g</a>
</span>
<ul class="lstProdFlags after">
</ul>
</div>
...
答案 0 :(得分:1)
我认为你面临两个完全不同的问题:
Jsoup不会加载您认为加载的网站。您指定的网站通过JavaScript呈现其内容,并在通过AJAX加载初始页面后加载一些内容。 JSoup无法处理这个问题。您需要调查AJAX调用并直接使用Jsoup,或者使用selenium webdriver之类的东西在真实的浏览器中获取页面,这将按照您的预期呈现所有内容。
CSS类名称不能包含实际用途的空格 1 。在HTML中,空格用作类名之间的分隔符。因此<ul class="lstProd ">
与<ul class="lstProd">
相同。然而,在CSS选择器中,类名由.className
指定,即点后跟类名。您可以连接几个类:element.select(".className1.className2")
1 从技术上讲,你可以在CSS类中放置空格,但是你需要用'\ '
来转义它们。请参阅https://mathiasbynens.be/notes/css-escapes或Which characters are valid in CSS class names/selectors?
编辑:更准确地了解CSS类名
答案 1 :(得分:1)
CSS类名 CAN 包含空格。
<ul class="lstProd ">
与<ul class="lstProd">
相同。
我可以看到你有多个<ul>
具有相同的班级名称
检查或遍历此类元素的更好方法是nth-child
因此,要查找所需的选择器,您可以使用#abaProd > ul:nth-child(4)
For more details about nth-child