我有一个功能
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行,在蜘蛛中 细节(HREF) NameError:未定义全局名称'details'我已经尝试过self.details(href)方法,但是还有一个错误,说它无法解析“self”。我该如何解决这个问题?
答案 0 :(得分:3)
由于您在文件spider(1)
之前致电def details()
,因此该功能details()
尚不清楚。
您至少应该从spider(1)
开始移动函数定义后面的def details()
,只要调用{def spider():
就可以将def details()
行留在spider()
之前1 {}当spider()
所需的所有内容都是“已知”时发生,即在目前处理的文件中解析。
答案 1 :(得分:1)
如果你定义这样的详细功能:
def details(self, href):
......
然后,您可以调用self.details。虽然我不太明白你的错误......