Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scrapy
- from scrapy.exceptions import CloseSpider
- class AmazonDealsSpider(scrapy.Spider):
- name = 'amazon_deals'
- page_number = 2
- def start_requests(self):
- yield scrapy.Request(url = 'https://www.amazon.ca/electronics-deals-electronics-sale-tv-sale/b/ref=gbps_ftr_m-4_b14c_page_2?node=2055586011&gb_f_dealsce=dealTypes:DEAL_OF_THE_DAY%252CBEST_DEAL%252CLIGHTNING_DEAL,page:2,sortOrder:BY_SCORE,enforcedCategories:667823011%252C2404990011%252C2690975011%252C677230011%252C7337291011%252C3379552011%252C3379595011%252C6205511011%252C680468011%252C11402068011%252C6916844011%252C677268011%252C1233055011%252C677273011%252C7204527011%252C677250011%252C2690953011%252C677252011%252C677212011%252C677226011%252C3379546011,dealsPerPage:24&pf_rd_p=cd5fdf1b-afb1-45db-8a82-940414a2b14c&pf_rd_s=merchandised-search-4&pf_rd_t=101&pf_rd_i=2055586011&pf_rd_m=A3DWYIK6Y9EEQB&pf_rd_r=SZAAA9DYQ8BZ0C01Y9RJ&ie=UTF8',
- callback = self.parse
- )
- def parse(self, response):
- deals = response.xpath('//*[@class="a-section dealContainer"]')
- # if deals == 0:
- # raise CloseSpider
- for deal in deals:
- title =deal.xpath('.//h1[@id="title"]/span/text()').get()
- sell_price = deal.xpath('.//span[@class="gb-font-size-medium inlineBlock unitLineHeight dealPriceText"]/text()').get(),
- actual_price = deal.xpath('.//span[@class="a-color-base gb-font-size-base inlineBlock unitLineHeight a-text-strike"]/text()').get(),
- discounted_rate = deal.xpath('.//span[@class="a-color-base gb-font-size-base inlineBlock unitLineHeight a-text-strike"]/following-sibling::span/text()').get(),
- review_rating = deal.xpath('.(//*[@class="a-icon a-icon-star a-star-4-5"]/span)[1]/text()').get(),
- reviewers = deal.xpath('.(//span[@id="acrCustomerReviewText"])[1]/text()').get()
- yield {
- 'Title': title,
- 'sell_price': sell_price,
- 'actual_price': actual_price,
- 'discounted_rate': discounted_rate,
- 'review_rating': review_rating,
- 'reviewers': reviewers
- }
- next_page = 'https://www.amazon.ca/electronics-deals-electronics-sale-tv-sale/b/ref=gbps_ftr_m-4_b14c_page_'+ str(self.page_number) +'?node=2055586011&gb_f_dealsce=dealTypes:DEAL_OF_THE_DAY%252CBEST_DEAL%252CLIGHTNING_DEAL,page:3,sortOrder:BY_SCORE,enforcedCategories:667823011%252C2404990011%252C2690975011%252C677230011%252C7337291011%252C3379552011%252C3379595011%252C6205511011%252C680468011%252C11402068011%252C6916844011%252C677268011%252C1233055011%252C677273011%252C7204527011%252C677250011%252C2690953011%252C677252011%252C677212011%252C677226011%252C3379546011,dealsPerPage:24&pf_rd_p=cd5fdf1b-afb1-45db-8a82-940414a2b14c&pf_rd_s=merchandised-search-4&pf_rd_t=101&pf_rd_i=2055586011&pf_rd_m=A3DWYIK6Y9EEQB&pf_rd_r=SZAAA9DYQ8BZ0C01Y9RJ&ie=UTF8&nocache=1623468979613'
- if self.page_number <= 5:
- self.page_number += 1
- yield response.follow(next_page,
- callback = self.parse)
Advertisement
Add Comment
Please, Sign In to add comment