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 최고의 웹 스크래핑 프레임워크 중 하나이며, 사용하기 쉽고 빠르며 다양한 기능을 갖추고 있습니다.

하지만 여러 페이지를 반복적으로 스크래핑하고 싶다면 어떻게 해야 할까요? 제품 페이지 등

가장 쉬운 방법은 요청 함수에 간단한 콜백을 추가하는 것입니다.

다음은 Amazon, eBay 및 Etsy와 같은 제품이 나열된 웹사이트를 크롤링하는 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()
로그인 후 복사

그런 다음 각 링크를 반복하여 페이지 소스를 가져오기 위한 요청을 보내고 다음과 같이 구문 분석 항목에 대한 콜백을 수행합니다.

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를 사용하여 제품 페이지를 재귀적으로 스크래핑하는 것은 요청 함수에 콜백을 추가하는 것만큼 쉽게 구현할 수 있습니다.

위 내용은 Scrapy 및 요청 콜백을 사용하여 Python에서 제품 페이지(Etsy, Amazon, Ebay)를 스크랩하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!