2017-07-28 37 views
1

最近幾天我一直在使用JSoup來爲我的Android應用程序項目嘗試爲亞馬遜數據提取一些數據,並且我已經看到了所有的教程JSoup網站以及Stack Overflow本身的許多問題。然而,儘管我已經嘗試了所有的事情,並且我花了所有的時間嘗試從img元素中提取源屬性,但似乎沒有任何工作。從網站在JSoup中嵌入幾個元素中嵌套的圖像源

HTML代碼是列在這裏,我想提取是從具有類名「A-動態圖像的拉伸水平」 img元素的源屬性:

<ul class="a-unordered-list a-nostyle a-horizontal list maintain-height"> 
<li class="image item itemNo0 selected maintain-height"><span class="a-list-item"> 
    <span class="a-declarative" data-action="main-image-click" data-main-image-click="{}"> 
     <div id="imgTagWrapperId" class="imgTagWrapper"> 
      <img alt="MSI R9 390 GAMING 8G Graphics Card" src="(source URL that I want to extract)" 

" data-old-hires="https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SL1500_.jpg" class="a-dynamic-image a-stretch-horizontal" id="landingImage" data-a-dynamic-image="{&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX450_.jpg&quot;:[338,450],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX425_.jpg&quot;:[319,425],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX466_.jpg&quot;:[350,466],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX355_.jpg&quot;:[266,355],&quot;https://images-na.ssl-images-amazon.com/images/I/81RZgkZUJlL._SX522_.jpg&quot;:[392,522]}" style="max-width:522px;max-height:392px;"> 
      </div> 
     </span> 
    </span></li> 

我的Android Studio中的代碼如下:

Document doc = Jsoup.connect(url).get(); 
Element link= doc.select("ul.a-unordered-list a-nostyle a-horizontal list maintain-height").select("span.a-list-item span.a-declarative").select("span.a-declarative") 
        .select("div.imgTagWrapper").select("img.a-dynamic-image a-stretch-horizontal").first(); 
String imageSRC = link.attr("src"); 

我很想知道究竟我在這裏失蹤,因爲承認我還是很缺乏經驗的Java和特別JSoup。任何幫助將不勝感激,謝謝!

回答

2

試試這個。

Element link= doc.select("ul.a-unordered-list.a-nostyle.a-horizontal.list.maintain-height") 
    .select("span.a-list-item span.a-declarative") 
    .select("span.a-declarative") 
    .select("div.imgTagWrapper") 
    .select("img.a-dynamic-image.a-stretch-horizontal").first(); 
String imageSRC = link.attr("src"); 

你應該

.select("TAG.CLASS1.CLASS2.CLASS3") 

,而不是

.select("TAG.CLASS1 CLASS2 CLASS3") 
+0

感謝這麼多選擇多個類!這工作,我沒有意識到,空間意味着他們是不同的階級。另外,你寫了兩次span.a-declarative,但我明白它可能是一個錯字,它仍然有效。再次感謝你! – coolyfrost