2

Javascript と jQuery ライブラリを使用してデータをスクレイピングしようとしています。

ここまでは順調ですね。タグ間からデータをスクレイピングできます。たとえば、<li>タグからデータを取得したい場合は、次のようにします。

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

<img>ただし、次のコードを使用してタグから src を取得しようとすると、最初の画像のみが返されます。

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

最初の行だけでなく、完全なリスト (ページ上のすべての画像) を返す方法を知る必要があります。

4

3 に答える 3

4

<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 配列から標準配列に変換されます。
于 2013-04-24T23:07:06.940 に答える
0

ページ上のすべての画像..?

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

またはそれらのリストを取得する -

var list = $('li img').map(function() {
              return $(this).attr('src');
           }).get();
于 2013-04-24T20:39:06.397 に答える
0
$('img').each(function(){
    alert($(this).prop('src'));
});
于 2013-04-24T20:40:05.260 に答える