2017-01-21 7 views
3

私の治療ではspider.py、最後の2行を参照してください。私はurl1からURLアドレスをparse()に取得したいと思います。どのようにコードするのですか?Scrapyの上位機能からURLアドレスを取得するには?

class DmozSpider(scrapy.Spider):  
    name = "sh2" 

    def __init__(self, category=None, *args, **kwargs): 
      # super(MySpider, self).__init__(*args, **kwargs) 
      self.start_urls = ['http://esf.suzhou.fang.com/housing/__1_0_0_0_1_0_0/',]  

    def parse(self, response):   
      num = response.xpath('//*[@id="pxBox"]/p/b/text()').extract()[0] 
      if int(num) >2000: 
       urls = response.xpath('//*[@id="houselist_B03_02"]/div[1]/a/@href').extract()[1:] 
       for url in urls: 
        url1 = self.start_urls[0].split('/housing')[0] + url 
        yield scrapy.Request(url1, callback=self.parse0)  
      else:    
       url = self.start_urls[0] 
       yield scrapy.Request(url,callback=self.parse1) 


    def parse0(self, response): #http://esf.sh.fang.com/housing/25__1_0_0_0_1_0_0/ 
      num = response.xpath('//*[@id="pxBox"]/p/b/text()').extract()[0] 
      if int(num) >2000: 
       urls = response.xpath('//*[@id="shangQuancontain"]/a/@href').extract()[1:] 
       for url in urls: 
        url2= self.start_urls[0].split('/housing')[0] + url 
        yield scrapy.Request(url2, callback=self.parse1)  
      else: 
       #<Here,I want to get the URL address from url1 in function parse> 
       yield scrapy.Request(url1,callback=self.parse1) 

答えて

1

リクエストに必要なデータはいつでも渡すことができ、コールバックメソッドで取得できます。

yield Request(url=url, callback=self.parse, meta={"page":1}) 

そして、解析方法、

def parse(self, response): 
    page = response.meta["page"] + 1 

0

私はそれを得ました。 使用url1 = response.url

+0

詳細は、他のユーザーに役立つだろうあなたのresponse.urlに代わるインチ –

関連する問題