(불법적인 행위를 용납하지 않습니다. 이는 교육 목적으로만 사용됩니다)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!