簡體   English   中英

用jsoup為Java解析HTML的問題

[英]Issue on parsing Html with jsoup for java

我正在嘗試使用jsoup解析HTML。

我使用“嘗試jsoup”來檢查html的解析是否正確。

結果屏幕截圖: 請打開此鏈接^^

我的代碼是:

    URL url = new URL("http://tw.search.bid.yahoo.com/search/ac;_ylt=AtqkyTO06sgGHho20HzmPEX3_rF8?ei=UTF-8&p=%E8%A1%A3%E6%9C%8D");
    Document doc;
    try {
        doc = Jsoup.parse(url, 3000);
        Elements descriptions = doc.select("div#srp_sl_result"+" div.att-item");

        for (Element element : descriptions) {  
            System.out.println(element.ownText());
            System.out.println("--------------");
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 }

但是結果返回為空,我得到以下輸出:

--------------

--------------

--------------

我期望輸出像:

女裝手套衣服*艾爾莎*暗釦長款披風式毛衣罩衫外套S~L【TAA1166】 出價 799 元 直購 799 元 運費80元 |    
30 次 | 剩 16小時 60分 賣家:艾爾莎時尚精品 (評價 25229) 在新北市
☆意樂舖☆【塑鋼衣架】ABS強化多功能神奇魔術衣架(收納衣服.領帶.皮帶.肩帶) 出價 35 元 直購 35 元 運費
55元 | 8 次 | 1天 6小時 賣家:意樂舖(創意樂園小舖) (評價 14613) 在新北市
HappyLife【YK1324】韓國超人氣乾濕兩用衣架 防滑魔術衣架 止滑衣架 衣服衣櫃衣櫥收納 出價 25 元 直購 
25 元 運費70元 | 16 次 | 2天 3小時 賣家:HappyLife快樂生活網 (評價 14360) 在新北市

以下是搜索頁面中的一些示例HTML:

 <div class="att-item item yui3-g " data-url="https://login.yahoo.com/config/login?.intl=tw&amp;.pd=c%3D3Chd7Yq72e502eh4R99sgUvi5Q--&amp;.done=https%3A%2F%2Ftw.search.bid.yahoo.com%2Fsearch%2Fauction%2Fproduct%3Fei%3DUTF-8%26p%3D%25E8%25A1%25A3%25E6%259C%258D&amp;rr=2465463942"> 
    <div class="yui3-u"> 
        <div class="srp-pdimage"> 
            <a href="https://tw.page.bid.yahoo.com/tw/auction/e79010279;_ylt=ApstmFiftkQPQ2krNhqCT3xyFbN8;_ylv=3"> <img height="120" alt=" (DAJIN達錦衣服設計中心)棒壘球帽字凸繡200元,棒球帽,帽子,棒壘球服,棒球衣 " src="https://s.yimg.com/hg/ac/30/ea/e79010279-ac-4511xf9x0430x0600-s.jpg" /> </a> 
        </div> 
     </div> 
 </div>

我應該更改我的代碼嗎? 如何實現我的目標。

請幫我!

如文檔所述,您應該使用text()方法,而不是ownText() ,它是:

獲取此元素及其所有子元素的組合文本。

這是一個更新的示例:

public static void main(String[] args) throws MalformedURLException {
    URL url = new URL( "http://tw.search.bid.yahoo.com/search/"
            + "ac;_ylt=AtqkyTO06sgGHho20HzmPEX3_rF8?ei=UTF-8&p=%E8%A1%A3%E6%9C%8D");

    Document doc;
    try {
        doc = Jsoup.parse(url, 3000);
        Elements descriptions = doc.select("div#srp_sl_result div.att-item");

        for (Element element : descriptions) {
            System.out.println(element.text());
            System.out.println("--------------");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我訪問了您要解析的頁面,並在我編寫的瀏覽器控制台中:

$('div#srp_sl_result div.att-item')

搜索返回一個div:

<div class="att-item item yui3-u" data-url="https://login.yahoo.com/config/login?.intl=tw&amp;.pd=c%3D3Chd7Yq72e502eh4R99sgUvi5Q--&amp;.done=https%3A%2F%2Ftw.search.bid.yahoo.com%2Fsearch%2Fauction%2Fproduct%3Fei%3DUTF-8%26p%3D%25E8%25A1%25A3%25E6%259C%258D&amp;rr=3456505015" id="yui_3_14_1_3_1394093660536_452">
        <div class="wrap" id="yui_3_14_1_3_1394093660536_451">
            <div class="srp-pdimage" id="yui_3_14_1_3_1394093660536_450">
                <a href="https://tw.page.bid.yahoo.com/tw/auction/f61398121;_ylt=Ali1FeHY3kStUUeBmGO4vupyFbN8;_ylv=3?u=Y2583393636" id="yui_3_14_1_3_1394093660536_456">
                    <img width="200" alt=" HappyLife【SP323】納川6+1家庭裝真空收納袋/真空袋/壓縮袋/棉被衣物衣服收納~附吸氣管 " src="https://s.yimg.com/hg/ac/b6/51/f61398121-ac-6849xf8x0600x0400-s.jpg" id="yui_3_14_1_3_1394093660536_455">
                </a>
            </div>
            <div class="srp-pdhead">
                <div class="srp-pdinfo">
                    <a class="srp-bid" href="https://tw.page.bid.yahoo.com/tw/show/bid_hist;_ylt=Ahu0X7QeYNL6gEwV.IhDhWlyFbN8;_ylv=3?aID=f61398121">6 次</a>
                    <span>出價</span>
                    <em>399</em>
                    <span>元</span>
                    <span class="sep">|</span>
                </div>
                        <div class="srp-pdprice">
                    <span>直購</span>
                    <em>399</em>
                    <span>元</span>
                </div>
                    </div>
            <div class="srp-pdtitle">
                <a href="https://tw.page.bid.yahoo.com/tw/auction/f61398121;_ylt=AiNoFG2AOvisNBiTc.AyjgxyFbN8;_ylv=3?u=Y2583393636"> HappyLife【SP323】納川6+1家庭裝真空收納袋/真空袋/壓縮袋/棉被衣物衣服收納~附吸氣管 </a>
            </div>
            <div class="srp-pdftitle">
                <a href="https://tw.page.bid.yahoo.com/tw/auction/f61398121;_ylt=AiNoFG2AOvisNBiTc.AyjgxyFbN8;_ylv=3?u=Y2583393636"> HappyLife【SP323】納川6+1家庭裝真空收納袋/真空袋/壓縮袋/棉被衣物衣服收納~附吸氣管 </a>
            </div>
            <div class="srp-pdstore">
                                <a class="srp-ico" href="https://tw.help.yahoo.com/auct/policy/protection.html#reward" alt="享買賣家五萬保障"></a>
                                <a href="http://tw.user.bid.yahoo.com/tw/user/Y2583393636;_ylt=Akxsb34F0Y37vNFzvvX8aldyFbN8;_ylv=3">HappyLife快樂生活網</a>
            </div>
        </div>
    </div>

所以我不明白為什么您要返回這么多元素。 無論如何, element.ownText()返回該div的文本,不包括任何內部元素,因此不應該顯示任何文本,因為該div沒有文本,只有其他元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM