簡體   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