我想在我的请求中设置一个自定义参数,以便在 parse_item 中处理它时可以检索它。这是我的代码:
def start_requests(self):
yield Request("site_url", meta={'test_meta_key': 'test_meta_value'})
def parse_item(self, response):
print response.meta
Run Code Online (Sandbox Code Playgroud)
parse_item 将根据以下规则被调用:
self.rules = (
Rule(SgmlLinkExtractor(deny=tuple(self.deny_keywords), allow=tuple(self.client_keywords)), callback='parse_item'),
Rule(SgmlLinkExtractor(deny=tuple(self.deny_keywords), allow=('', ))),
)
Run Code Online (Sandbox Code Playgroud)
根据scrapy doc:
Response.meta 属性沿着重定向和重试传播,因此您将获得从蜘蛛发送的原始 Request.meta。
但我在parse_item. 有没有什么办法解决这一问题?是meta正确的方法吗?
当你生成一个新的 时Request,你需要指定该函数,否则它将默认callback传递给CrawlSpider 的方法。parse
我遇到了类似的问题,花了我一段时间来调试。
\n\n\n回调(可调用)\xe2\x80\x93 将使用此请求的响应(一旦下载)作为其第一个参数来调用的函数。有关详细信息,请参阅下面的将附加数据传递给回调函数。如果请求未指定回调,则将使用 Spider\xe2\x80\x99s parse() 方法。请注意,如果在处理过程中引发异常,则会调用 errback。
\nmethod (string) \xe2\x80\x93 此请求的 HTTP 方法。默认为“GET”。
\nmeta (dict) \xe2\x80\x93 Request.meta 属性的初始值。如果给定,传入此参数的字典将被浅复制。
\n
| 归档时间: |
|
| 查看次数: |
3447 次 |
| 最近记录: |