python中的函数无法识别_函数中无法识别全局变量

在使用Python的Scrapy框架编写爬虫时,作者遇到一个困扰:在函数`parse`和`parse_translation`中,全局变量`rawTranscripts`和`rawTranslations`无法被识别。尽管尝试了使用`global`关键字,问题仍然存在。作者已经排除了常见的解决方案,并怀疑可能是由于解析函数的调用方式导致的。寻求社区帮助以找出问题所在。
摘要由CSDN通过智能技术生成

我知道这个问题看起来和这里的其他问题一模一样,因为我只是把它们都读了一遍,它们都说要做我已经尝试过的事情,但它没有奏效(或者我错过了与我的情况有细微差别)。我的情况是:

我正在用Scrapy和python2.7.11编写一个scraper,我的代码如下(这是一个删除了不相关行的复制粘贴,但我可以根据请求重新添加):class LbcSubtopicSpider(scrapy.Spider):

...omitted...

rawTranscripts = []

rawTranslations = []

def parse(self, response):

#global rawTranscripts, rawTranslations

rawTitles = []

rawVideos = []

for sel in response.xpath('//ul[1]'): #only scrape the first list

...omitted...

index = 0

for sub in sel.xpath('li/ul/li/a'): #scrape the sublist items

index += 1

if index%2!=0: #odd numbered entries are the transcripts

transcriptLink = sub.xpath('@href').extract()

#url = response.urljoin(transcriptLink[0])

#yield scrapy.Request(url, callback=self.parse_transcript)

else: #even numbered entries are the translations

translationLink = sub.xpath('@href').extract()

url = response.urljoin(translationLink[0])

yield scrapy.Request(url, callback=self.parse_translation)

print rawTitles

print rawVideos

print rawTranslations

def parse_translation(self, response):

global rawTranslations

for sel in response.xpath('//p[not(@class)]'):

rawTranslation = sel.xpath('text()').extract()

rawTranslations.append(rawTranslation)

这将在任何时候返回一个错误“print rawTranslations”或rawTranslations.append调用(rawTranslation)”是因为未定义全局“rawTranslations”。在

正如我之前所说,我已经对这个问题进行了广泛的研究,几乎每个人都在互联网上说,只要在你要使用/修改它的任何函数的开头添加一个“global(name)”行(虽然我从来没有分配给它,所以我甚至不需要这个)。不管我的全局行是否被注释掉,结果都是一样的。这种行为似乎违背了我所读到的关于Python中全局变量如何工作的所有内容,因此我怀疑这可能是一个与如何调用解析函数有关的古怪问题恶心。请求(....). 在

很抱歉,你又看到了一个问题,但这次似乎有点扭曲,希望有人能查到真相。谢谢。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值