Java 使用Jsoup处理CSS类名中的空白
我想从此页面选择一些超市产品信息: 为此,我应该选择带有classJava 使用Jsoup处理CSS类名中的空白,java,dom,web-crawler,jsoup,Java,Dom,Web Crawler,Jsoup,我想从此页面选择一些超市产品信息: 为此,我应该选择带有class“lstProd”的标签: 如果类名是“lstProd”,这将很容易,但问题是名称末尾的空格。我无法让Jsoup来处理这件事 我尝试了下面的代码和其他方法,但它总是得到一个空列表 org.jsoup.nodes.Document document = Jsoup.connect("http://www.angeloni.com.br/super/index?grupo=15022").get(); org.jsoup.s
“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>
...
-
CÓD.1341372
“>
...
我认为您面临两个完全不同的问题:
与
相同。然而,在CSS选择器中,类名由.className
指定,即点后跟类名。您可以像这样包含几个类:元素。选择(“.className1.className2”)
'\'
对其进行转义。看到或
编辑:更加精确地描述CSS类名CSS类名可以包含空格。
而且
与
不同
我可以看到您有多个具有相同类名的
。检查或遍历此类元素的更好方法是通过第n个子元素
因此,要找到所需的选择器,您可以使用#abaProd>ul:nth child(4)
我明白。我使用jauntapi,这是一个简单的javaweb爬虫,它可以处理这个页面。但是Jaunt不是免费的,所以我搬到了JSoup。你知道其他可以处理这类事情的API吗?我觉得SeleniumWebDriver有点太重了?我很困惑。因为你说的那件事,这趟旅行也办不到。我将尝试webdriver。webdriver有一个绑定到HTML单元,这是一个纯Java的解决方案,而且是轻量级的。问题在于,它通常不像普通浏览器那样处理复杂的JavaScript。不过值得一试。下一个最好的选择是phantomjs绑定,它至少是无头的。我认为你关于CSS名称中空格的说法是误导性的。如果名称中有空格,则必须在HTML中转义。一个简单的\
就可以了。如果不转义这些空格,它们将被视为类名之间的分隔符。看到或