无法从 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。
我只想将 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。