繁体   English   中英

使用Jsoup处理CSS类名称中的空格

[英]Deal with whitespaces in CSS class names with Jsoup

我要从此页面选择一些超市产品信息:

http://www.angeloni.com.br/super/index?grupo=15022

为此,我应该选择"lstProd "类的<ul>标签:

如果类名是"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&amp;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&amp;idProduto=1341372">Creme Dental SORRISO Super Refrescante
                        Tubo 90g</a>

                                    </span>

                <ul class="lstProdFlags after">
                </ul>
            </div>
...

我认为您面临两个完全独立的问题:

  1. Jsoup不会加载您认为已加载的网站。 您指定的网站通过JavaScript呈现其内容,并在通过AJAX加载初始页面后加载一些内容。 JSoup无法处理此问题。 您要么需要调查AJAX调用并直接通过Jsoup来获得它们,要么使用硒Web驱动程序之类的东西来在真实的浏览器中获取页面,该页面将按您期望的方式呈现所有内容。

  2. CSS类名称不能包含用于实际用途的空格1 在HTML中,空格用作类名之间的分隔符。 因此, <ul class="lstProd "><ul class="lstProd"> 但是,在CSS选择器中,类名由.className指定,即点号后跟类名。 您可以像这样概括几个类: element.select(".className1.className2")

1从技术上讲,您可以在CSS类中放置空格,但是您需要使用'\\ '对其进行转义。 请参阅https://mathiasbynens.be/notes/css-escapesCSS类名称/选择器中哪些字符有效?

编辑:更精确地关于CSS类名称

CSS类名称可以包含空格。
<ul class="lstProd "> 相同<ul class="lstProd">

而且我可以看到您有多个具有相同类名的<ul>
检查或遍历此类元素的更好方法是通过nth-child
因此,要查找所需的选择器,可以使用#abaProd > ul:nth-child(4)
有关nth-child更多详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM