Python 在Scrapy机器人中,如何从一个函数内部调用另一个函数?
我知道这是一个新手问题,也是一个基本的Python问题,但它是在Scrapy的上下文中,我在任何地方都找不到答案 当我运行此bot代码时:Python 在Scrapy机器人中,如何从一个函数内部调用另一个函数?,python,python-2.7,web-scraping,scrapy,Python,Python 2.7,Web Scraping,Scrapy,我知道这是一个新手问题,也是一个基本的Python问题,但它是在Scrapy的上下文中,我在任何地方都找不到答案 当我运行此bot代码时: import scrapy from tutorial.items import DmozItem class DmozSpider(scrapy.Spider): name = "dmoz" allowed_domains = ["lib-web.org"] start_urls = [ "http://www.
import scrapy
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["lib-web.org"]
start_urls = [
"http://www.lib-web.org/united-states/public-libraries/michigan/"
]
count = 0
def increment(self):
global count
count += 1
def getCount(self):
global count
return count
def parse(self, response):
increment()
for sel in response.xpath('//div/div/div/ul/li'):
item = DmozItem()
item['title'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
item['desc'] = sel.xpath('p/text()').extract()
x = getCount()
print x
yield item
DMOZ项目:
import scrapy
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
我得到这个错误:
File "/Users/Admin/scpy_projs/tutorial/tutorial/spiders/dmoz_spider.py", line 23, in parse
increment()
NameError: global name 'increment' is not defined
为什么我不能从parse(self,response)
中调用increment()
?我怎样才能做到这一点
感谢您的帮助。increment()
是spider的一个实例方法-使用self.increment()
调用它
此外,不需要使用globals-definecount()
作为实例变量
固定版本:
import scrapy
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["lib-web.org"]
start_urls = [
"http://www.lib-web.org/united-states/public-libraries/michigan/"
]
def __init__(self, *args, **kwargs):
super(DmozSpider, self).__init__(*args, **kwargs)
self.count = 0
def increment(self):
self.count += 1
def getCount(self):
return self.count
def parse(self, response):
self.increment()
for sel in response.xpath('//div/div/div/ul/li'):
item = DmozItem()
item['title'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
item['desc'] = sel.xpath('p/text()').extract()
x = self.getCount()
print x
yield item
你也可以我要读一下init和self。谢谢你的指导。这是我需要的。