2013-04-24 122 views
1

我想抓取數據使用JavaScript和jQuery庫。Javascript/jQuery - 刮IMG SRC

到目前爲止這麼好。我能夠從標籤之間刮取數據。例如,我想從<li>標籤獲取數據,我這樣做如下:

stuff_found = $(data).find('li'); 

但是,如果我嘗試使用下面的代碼從<img>標籤得到SRC,只返回第一個圖像。

stuff_found = $(data).find('img').attr(); 

我需要知道如何返回完整列表(頁面上的每個圖像),而不僅僅是第一行。

回答

0

頁面上的所有圖片 ..?

$('li img').each(function(){ 
    var src = $(this).attr('src'); 
}); 

或者讓他們的名單 -

var list = $('li img').map(function() { 
       return $(this).attr('src'); 
      }).get(); 
+0

我對此有些混淆,說實話。那時候我有'stuff_found = $(data).find('li');',然後在for循環中進行跟蹤我使用'var value = stuff_found [i] .firstChild.nodeValue;'獲取每個單獨的值。我實際上想要做的是完全相同的事情,但我希望每個li元素中都有圖像源。 – user1100149 2013-04-24 22:20:08

0
$('img').each(function(){ 
    alert($(this).prop('src')); 
}); 
3

最簡單的方法是寫的圖像選擇只拿到那些內部<li>標籤。那麼你可以用.each()或者,如果你真的只需要圖像src屬性值,.map()。例如:

var imageList = $('li img').map(function() 
{ 
    return $(this).attr('src'); 
}).get(); 

在這裏的代碼示例出現這種情況:

  1. 你第一次得到所有的都在裏面<li>標籤的影像 - 這$('li img')部分。
  2. 然後用.map()您應用一個函數來遍歷所有這些函數並提取一個值。基本上,.map()所做的是它需要一個列表,將給定的函數應用於列表的所有元素,並返回帶有新處理元素的結果列表。
  3. $(this).attr('src')的部分從圖像標籤中獲取實際的src值。
  4. 最後,因爲jQuery返回它自己的數組類型而不是標準的javascript數組,所以您需要執行.get() - 這是將返回的對象從jQuery數組轉換爲標準數組的原因。