用方法调用 python3 class

call python3 class with methods

我有一个名为:scrape.py的文件,该文件包含以下内容class:

我试图用它的方法调用我的 class BrickSetSpider,并最终 return parse_page_urls 的值 运行 当这个程序像python scrape.py.

但是,当我 运行 python scrape.py 时,我得到:

NameError: name 'response' is not defined

这一行:

page = spider.parse_se_page_url(response)

谁能帮我运行我的两种方法(输出g_result_list的结果?

非常感谢!

一些事情:

  • 您得到 NameError: name 'response' is not defined 错误的原因是您在 main 范围内没有定义任何名为 response 的变量 不定义这样的参数就不能使用。
  • 另外在parse_se_page_urls你多了一行

    def parse_se_page_urls(self, g_result_page):
    

    没有任何函数的实现。应该也是有问题的。

  • 除非遗漏了一些不在发布的代码中的内容,否则在您的第二个函数中您使用的是 g_result_page 变量 - 但与 response 一样,它未定义。 您在上面的函数中有一个同名参数,但它是该函数的局部变量,因此第二个参数不知道。要将它们初始化为实例的成员,请添加构造函数,如下所示:

    def __init__(self):
        self.g_result_list = []
        self.g_result_page = []
    

    然后使用写入 self.g_result_page

  • 在您的第一个函数中,您有以下两行:

    set(g_result_page)
    list(g_result_page)
    

    这些行没有效果 - 它们从 g_result_page 中创建了一个 set 和一个 list 但是这些数据结构没有分配给任何东西,因此在结束时被清除函数

您的代码中有两个小错误。

首先,当你得到class的一个实例时,你不需要传入任何东西,所以你的代码变成了

spider = BrickSetSpider()

其次,您使用变量 page 通过执行 page = spider.parse_page_url(response) 来存储 spider.parse_page_url(response) 的输出,但是您随后调用 urls = page.parse_page_urls(result_page)。我相信你的意思是打电话给 urls = spider.parse_page_urls(page).

希望对您有所帮助。