我有一个名为:scrape.py的文件。此文件包含以下类:
我尝试使用其方法调用我的班级BrickSetSpider
,并在运行此parse_page_urls
程序时最终返回python scrape.py
的值。
然而,当我运行python scrape.py
时,我得到:
NameError:name' response'未定义
在这一行:
page = spider.parse_se_page_url(response)
有人可以帮助我运行我的两种方法(输出g_result_list
的结果吗?
非常感谢你!
答案 0 :(得分:2)
少数几个:
NameError: name 'response' is not defined
错误的原因是你没有在main范围内定义任何名为response
的变量
如果不定义这样的参数,就无法使用它。此外,parse_se_page_urls
还有一行
def parse_se_page_urls(self, g_result_page):
没有任何函数的实现。也应该有问题。
除非遗漏了发布的代码中的内容,否则在您的第二个函数中,您使用的是g_result_page
变量 - 但与响应一样,它没有定义。
您在上面的函数中有一个具有相同名称的参数,但它是该函数的局部变量,因此在第二个函数中是未知的。要将它们初始化为实例的成员,请按如下方式添加构造函数:
def __init__(self):
self.g_result_list = []
self.g_result_page = []
然后使用写self.g_result_page
在您的第一个功能中,您有以下两行:
set(g_result_page)
list(g_result_page)
这些行无效 - 它们会在set
中创建list
和g_result_page
但这些数据结构不会分配给任何内容,因此会在函数末尾清除
答案 1 :(得分:0)
您的代码中存在两个小错误。
首先,当你得到一个类的实例时,你不需要传入任何东西,所以你的代码变成了
spider = BrickSetSpider()
其次,您通过执行page
使用变量spider.parse_page_url(response)
来存储page = spider.parse_page_url(response)
的输出,然后调用urls = page.parse_page_urls(result_page)
。我相信你打算做的是致电urls = spider.parse_page_urls(page)
。
希望这有帮助。