python - Scrapy中如何获取上层函数的url地址?

标签 python scrapy

在我的 Scrapy spider.py 中,查看最后两行。我想从 parse() 中的 url1 获取 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)

最佳答案

您始终可以将任何您想要的数据传递给您的请求,并且您可以在回调方法中获取它们。

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

在解析方法中,

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

你的 response.url 的替代品

关于python - Scrapy中如何获取上层函数的url地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776103/

相关文章:

python - 如何在一个请求中从 Binance API 获取所有(或多个)对的历史 klines?

python - 如何在 __repr__ 函数中返回一个列表?

python : TypeError: 'float' object is not iterable

scrapy - 如何检测亚马逊站点地图

python - 抓取错误 : TypeError: __init__() got an unexpected keyword argument 'callback'

python scrapy - 输出csv文件为空

python - 在守护进程中运行 ffmpeg 时出现错误

python - 自动完成返回的数据未正确格式化为 json 列表

python - scrapy - 解析分页的项目

Python 快速创建和删除目录会间歇性导致 WindowsError [错误 5]