0

このリンクから製品名を取得するのを手伝ってください: http://www.gap.com/browse/category.do?cid=5168&scrollTo=product353401012&scrollTo=product353401012#pageId=0&department=75

製品名は div にある class="product-card--name" に含まれています。実行すると :response.css('div.product-card--name::text').extract() 、それ空のリストを返します。

css コマンドと xpath コマンドの両方を提供してください。

4

1 に答える 1

0

Gaby が言ったように、コンテンツは動的に読み込まれます。これは次の方法で確認できます。

  • クロムでスクラップするためにウェブサイトを開く(Firefoxにもそれを行う方法があります)
  • F12 キーを押して DevTools を開きます
  • 「ネットワーク」タブを選択します
  • フィルターとして「XHR」を選択
  • 検索する (またはウェブサイトをリロードする)

XHR フィルター

アイテムのリストが表示されます。必要なものは次のとおりです。

search?cid=5168&isFacetsEnabled=true&globalShippingCountryCode=&globalShippingCurrencyCode=&locale=en_US&pageId=0

それをクリックすると、ヘッダー付きの http リクエストと、必要なすべてのデータを含むレスポンスが表示されます。

これをスクレイピーで行うにはもう少し複雑です。このリンクを破棄する必要がありますが、デフォルト (「GET」) の代わりに「POST」メソッドを使用します。スクレイピースパイダーからこれを行うには:

yield scrapy.Request(url, self.parse_data, method="POST", headers=headers, body=body)

URL は XHR フィルターで見つけたものである必要があり、使用されるメソッドは「POST」です。以前に見つけたヘッダーをコピーする必要があり、本文には検索対象に固有のすべてのパラメーターが含まれます。そこから、ファイルに保存したり、好きなことをしたりできる JSON 応答を取得します。

詳細が必要な場合はお知らせください。

于 2016-12-05T23:12:30.313 に答える