全局名称 <function> 未定义错误 Python

Global Name <function> not defined error Python

我有一个功能

def details(href):
    response = requests.get(href)
    soup = BeautifulSoup(response.content)
    genre =  soup.find(text="Genre: ").next_sibling.text
    print genre

我正在尝试在另一个函数中调用

def spider(max_pages):
    page = 1
    while page <= max_pages:
        url = 'http://www.boxofficemojo.com/yearly/chart/?page=' + str(page) + '&view=releasedate&view2=domestic&yr=2013&p=.htm'
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text)
        for link in soup.select('td > b > font > a[href^=/movies/?]'):
            href = 'http://www.boxofficemojo.com' + link.get('href')
            details(href)
            title = link.string
            listOfTitles.append(title)
        page += 1
spider(1)

我遇到错误

第 27 行,在 蜘蛛(1) 第 22 行,在 spider 中 详情(href) NameError:全局名称 'details' 未定义

我已经尝试了 self.details(href) 方法,但是还有一个错误提示无法解析 "self"。我该如何解决这个问题?

如果你这样定义细节函数:

  def details(self, href):
      ......

然后,您可以调用self.details。虽然我不太明白你的错误...

由于您在文件中的 def details() 之前调用了 spider(1),因此该函数 details() 尚不清楚。

你至少应该把调用spider(1)移到以def details()开头的函数定义后面,你可以在def details()之前保留def spider():行,只要调用spider()spider() 所需的一切都是 "known" 时发生,即在目前处理的文件中解析。