scrapy - Python 的回调问题

查看:138
本文介绍了scrapy - Python 的回调问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

代码如下:

def parse(self, response):
          for node in response.xpath('//*').extract():
              handlenode(node)
          for url in response.xpath('//a/@href').extract():
              url = urljoin_rfc('http://www.****.com/',url)
              yield scrapy.Request(url, callback=self.parse)
              

这里面的最后一行中的回调函数就是本身的parse.

那么。我现在有一个需求。 就是在第二个for循环中,我需要加一个 count计数。 这个时候,

1. 如果我count定义在当前类变量,然后再for 循环中count++ ,那么回调过后变量count好像会再初始化一次。count++就没有意义。
2. 如果count在parse中定义。那么好像还是有每次回调都重新初始化一次的问题。

请问一下在这里for循环计数要怎么实现呢。

解决方案

  1. 你可以用闭包来实现,大概思路如下:

def out():
    class data:
        count = 0
    def inner(l):
        for i in l:
            data.count += 1
        print data.count
    return inner

f = out()
f([1,2,3])
f([23,34,3,43,4]) 

  1. 可以用一个全局的变量来标记

这篇关于scrapy - Python 的回调问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆