无法从 Scrapy 中返回的请求获得响应

Can't get response from returned Request in Scrapy

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

# -*- 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")

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

您可以通过在实例化 Request 时设置 dont_filter=True 来解决它:

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

仅供参考,如果您有兴趣,下面是中间件的内部工作方式:source code