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

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -