Scrapy とリクエスト コールバックを使用して Python で商品ページ (Etsy、Amazon、Ebay) をスクレイピングする方法

Patricia Arquette
リリース: 2024-11-06 10:58:02
オリジナル
557 人が閲覧しました

How to Scrape Product Pages(Etsy, Amazon, Ebay) in Python Using Scrapy and Request Callbacks

(違法行為を容認しているわけではありません。これは教育目的のみです)

導入

Scrapy は Python の最高の Web スクレイピング フレームワークの 1 つで、使いやすく、高速で、機能が満載です。

しかし、複数のページを再帰的にスクレイピングしたい場合はどうなるでしょうか?商品ページなど

最も簡単な方法は、Request 関数に単純なコールバックを追加することです。

これは、Amazon、eBay、Etsy などの商品がリストされている Web サイトをクロールする Scrapy プロジェクト内のコード スニペットです:

def parse(self, response):
    links = response.css('a.s-item__link::attr(href)').getall()

    for link in links:
        yield Request(url=link, callback=self.parse_item)

    next_page = response.css('a.pagination___next.icon-link::attr(href)').get()
    if next_page:
        print('Next page: %s' % next_page)
        yield Request(url=next_page, callback=self.parse)

def parse_item(self, response):
    title = response.xpath('//h1[@class="x-item-title___mainTitle"]/span/text()').get()
    price = response.xpath('//span[@id="prcIsum"]/text()').get()

    yield {'title':title,
           'price':price}
ログイン後にコピー

仕組みは?

まず、次のコード行を使用して、製品ページにリストされている各アイテムのリンクを取得します。

links = response.css('a.s-item__link::attr(href)').getall()
ログイン後にコピー

次に、これらの各リンクをループし、ページのソースを取得するリクエストを送信し、parse_item:
へのコールバックを実行します。

for link in links:
     yield Request(url=link,callback=self.parse_item)
ログイン後にコピー

parse_item 関数内で、アイテムのタイトルと価格を取得します。

def parse_item(self, response):
      title = response.xpath('//h1[@class="x-item-title__mainTitle"]/span/text()').get()
      price = response.xpath('//span[@id="prcIsum"]/text()').get()

      yield {'title':title,
             'price':price}
ログイン後にコピー

コードは次のページへのリンクを取得し、それ自体へのコールバック (つまり、解析関数) でそれをリクエストし、最初からやり直します。

next_page = response.css('a.pagination__next.icon-link::attr(href)').get()
  if next_page:
        print('Next page:%s' % next_page)
        yield Request(url=next_page,callback=self.parse)
ログイン後にコピー

結論

ほら、とても簡単です!

Scrapy を使用して製品ページを再帰的にスクレイピングすることは、Request 関数にコールバックを追加するのと同じくらい簡単に実装できます。

以上がScrapy とリクエスト コールバックを使用して Python で商品ページ (Etsy、Amazon、Ebay) をスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!