代码之家  ›  专栏  ›  技术社区  ›  dkx22

无法从报废中返回的请求中获取响应

  •  2
  • dkx22  · 技术社区  · 10 年前

    我只想将url传递给另一个解析器。它没有像文档中所示的那样工作,所以我已经将代码减少到最小,但仍然一无所获。也尝试了产量

    # -*- coding: utf-8 -*-
    import scrapy
    import cfscrape
    from scrapy.spiders import Spider
    import json
    
    rez=[]
    
    class LinkbaseSpider(Spider):
    
    name = "mine"
    allowed_domains = ["127.0.0.1"]
    start_urls = (
        'file://127.0.0.1/home/link.html',
    ) 
    
    def parse(self, response):
    
        request= scrapy.Request("http://www.google.com",callback=self.parse2)
        return request
    
    
    def parse2(self,response):
        self.logger.info("Visited %s", response.url)
        print("00000000000000000000000")
    
    1 回复  |  直到 10 年前
        1
  •  2
  •   alecxe    10 年前

    假设您的缩进实际上是正确的 OffSiteMiddleware 根据 allowed_domains 。在这种情况下 google.com 不允许,因为 允许的域 设置为 ["127.0.0.1"] .

    您可以通过设置 dont_filter=True 实例化 Request :

    def parse(self, response):
        return scrapy.Request("http://www.google.com",
                              callback=self.parse2,
                              dont_filter=True)
    

    仅供参考,如果您感兴趣,这里是中间件内部的工作方式: source code .