全球名称<;功能>;未定义错误Python

全球名称<;功能>;未定义错误Python,python,web-crawler,Python,Web Crawler,我有一个函数 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

我有一个函数

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)
def spider(最大页数):
页码=1

而page如果您这样定义详细功能:

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

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

如果您这样定义详细功能:

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

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

因为您在文件中的
def details()
之前调用了
spider(1)
,所以该函数
details()
还不知道


您至少应该将调用
spider(1)
移到函数定义后面,从
def details()
开始,您可以在
def def details()
之前保留
def spider():
行,只要在
spider()
所需的一切都“已知”时调用
spider()
,也就是说,在到目前为止处理的文件中进行了解析。

由于在文件中的
def details()
之前调用了
spider(1)
,因此该函数
details()
还未知


您至少应该将调用
spider(1)
移到函数定义后面,从
def details()
开始,您可以在
def def details()
之前保留
def spider():
行,只要在
spider()
所需的一切都“已知”时调用
spider()
,即,在目前处理的文件中解析。

您的缩进不正确。
**
如何处理
详细信息(href)
?不能突出显示代码块中的代码。或者那是你的python文件的一部分?我试着加粗,但网站就是这样格式化的。在实际的代码中,它不在那里。这都在一个文件中吗?在spider?之前定义了详细信息之后,这就是问题所在,请根据我的回答向下移动
spider(1)
调用。谢谢!现在可以了。时限一到,我就接受你的答复。你的缩进不正确。
**
如何处理
详细信息(href)
?不能突出显示代码块中的代码。或者那是你的python文件的一部分?我试着加粗,但网站就是这样格式化的。在实际的代码中,它不在那里。这都在一个文件中吗?在spider?之前定义了详细信息之后,这就是问题所在,请根据我的回答向下移动
spider(1)
调用。谢谢!现在可以了。一旦时间限制到了,我会接受你的回答。我仍然得到未解决的自我错误引用:/如果你在一个类下定义了所有东西,比如def spider(self,max_pages):我相信,你也没有很好地定义spider。我仍然得到未解决的自我错误引用:/如果你在一个类下定义了所有东西,比如defspider(self,max_pages):我相信,您也没有很好地定义spider。