So scrapen Sie Produktseiten (Etsy, Amazon, Ebay) in Python mit Scrapy und Request Callbacks

Patricia Arquette
Freigeben: 2024-11-06 10:58:02
Original
558 Leute haben es durchsucht

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

(Ich dulde nichts Illegales, dies dient nur Bildungszwecken)

Einführung

Scrapy ist eines der besten Web-Scraping-Frameworks in Python, es ist einfach zu verwenden, schnell und voller Funktionen.

Aber was wäre, wenn Sie mehrere Seiten rekursiv durchsuchen möchten? Zum Beispiel Produktseiten.

Der einfachste Weg besteht darin, einer Request-Funktion einen einfachen Rückruf hinzuzufügen.

Hier ist ein Codeausschnitt in einem Scrapy-Projekt, das eine Website mit gelisteten Produkten wie Amazon, eBay und Etsy crawlt:

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}
Nach dem Login kopieren

Wie funktioniert es?

Zunächst erfasst es die Links aller auf einer Produktseite aufgeführten Artikel mithilfe dieser Codezeile:

links = response.css('a.s-item__link::attr(href)').getall()
Nach dem Login kopieren

Dann durchläuft es jeden einzelnen dieser Links, sendet eine Anfrage zum Abrufen der Seitenquelle und führt einen Rückruf an parse_item:
durch

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

Innerhalb der Funktion parse_item werden der Titel und der Preis des Artikels erfasst:

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}
Nach dem Login kopieren

Unser Code greift dann den Link zur nächsten Seite, fordert ihn mit einem Rückruf an sich selbst (d. h. die Parse-Funktion) an und beginnt von vorne:

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)
Nach dem Login kopieren

Abschluss

Los geht's, so einfach ist das!

Das rekursive Scrapen von Produktseiten mit Scrapy kann so einfach implementiert werden wie das Hinzufügen eines Callbacks zu einer Request-Funktion.

Das obige ist der detaillierte Inhalt vonSo scrapen Sie Produktseiten (Etsy, Amazon, Ebay) in Python mit Scrapy und Request Callbacks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!