2017-01-10 2 views
-1

とのdiv要素を通じて、私はアマゾンをクロールしていると私はタイトルだけで、特定のキーワードを使用してアイテムをクロールしていますので、キーワード。今、このリンクは、アマゾンのウェブサイトで、アイテムの配列を親切に返します。私は、下のコードのような最初のものを取得するのではなく、それぞれのループをループしたいと思います。私は何とかresult_0の0をインクリメントする必要があります。は移動scrapy

リストをクロールしてスクラップされた各アイテムからJSON配列を作成するための、スクラップのベストプラクティスは何ですか。

マイ解析方法

def parse(self, response): 
    item = AmazonItem() 
    title = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[2]/div[1]/a/@title').extract() 
    item['name'] = title 
    item['id'] = re.findall(r'\d+', title) 
    item['price'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[3]/div[1]/div[2]/a/span[2]/text()').extract() 
    item['publication_date'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[2]/div[1]/span[3]/text()').extract() 
    item['image'] = response.xpath('//*[@id="result_0"]/div/div/div/div[1]/div/div/a/img/@src').extract() 
    item['availability'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[3]/div[1]/div[4]/span/text()').extract() 
    item['store_link'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[2]/div[1]/a/@href').extract() 
    yield item 
+1

あなたがスクラップしようとしているページのURLの例を挙げると、あなたを見せやすくなります。 – Casper

+0

OKここに行く:) https://www.amazon.ca/s/ref=nb_sb_ss_c_2_3/163-4162929-0075348?url=search-alias%3Dvideogames&field-keywords=ps4&sprefix=ps4%2Caps%2C142&crid=6U56VTLG8WBK –

答えて

1

私はおそらくこのような何かだろう:それはどのように動作しないので

def parse(self, response): 
    for result in response.xpath('//div[@class="s-item-container"]'): 
    item = AmazonItem() 
    item['name'] = result.xpath('.//a[contains(@class,"s-access-detail-page")]/@title').extract_first() 
    item['image'] = result.xpath('.//img/@src').extract_first() 
    yield item 

を?

すべてのdivをクラスs-item-containerでループします。 ループ内では、もはやレスポンスは使用されませんが、結果として返されることに注意してください。 結果には、Amazonで表示されている各製品の内容が含まれています。 以前と同じようにxpathを使って情報を抽出することができます。あなたは.それが

のXPathので(応答を使用したのと同じ)完全なソースコードを使用して、クラス= "S-項目とのdiv内aタグを検索しますを忘れた場合 私たちは. でXPathを始めます-コンテナ"。同じメカニズムが画像に適用されます。

あなたはこれを行う方法の論理を理解したいと考えています。あなたがそうするならば、自分で必要なその他の情報を得ることができるはずです。それ以外の場合はコメントしてください。私はあなたのためにそれを明確にしようとします。

+0

あなたは#1ありがとう! –