python - Can't pass some fields from one method to another -
i've tried create parser using python scrapy supposed extract fields webpage. issue i'm facing here can't pass parameter in right way "target_page" method in spider class. know way passed "caption" , "value" fields "parse" method "target_page" not @ pythonic. however, did cause don't have idea how pass aforesaid fields in "target_page" method in proper way. how can it? in advance.
import scrapy class brokerspider(scrapy.spider): name = "brokersp" start_urls = ["https://www.mql5.com/en/signals/mt4/page{0}".format(page_num) page_num in range(1,10)] def parse(self, response): links in response.css("div#signals-table div.signal"): caption = links.css('span.name::text').extract_first() value = links.css('div.col-price::text').extract_first() link = links.css('a.signal-avatar::attr(href)').extract_first() yield scrapy.request(caption, value, url = link, callback = self.target_page) def target_page(self, title, price, response): jobber = response.css('div.header span a::text').extract_first() profit = response.css('div.cell.total a.blue::text').extract_first() yield {'title':title,'price':price,'jobber':jobber,'profit':profit}
you can use meta
attribute of request (documentation):
def parse(self, response): links in response.css("div#signals-table div.signal"): caption = links.css('span.name::text').extract_first() value = links.css('div.col-price::text').extract_first() link = links.css('a.signal-avatar::attr(href)').extract_first() request = scrapy.request(url = link, callback = self.target_page) request.meta['caption'] = caption request.meta['value'] = value yield request def target_page(self, response): caption = response.meta['caption'] value = response.meta['value'] jobber = response.css('div.header span a::text').extract_first() profit = response.css('div.cell.total a.blue::text').extract_first() yield {'title':caption,'price':value,'jobber':jobber,'profit':profit}
Comments
Post a Comment