Python,NameError:未定义名称浏览器



我知道有很多像这样的问题,我试着把它们都读了一遍。我正在做的是使用多处理库通过Python Selenium解析网页。因此,我有3个列表要提供给处理它们的函数。首先我编写函数,然后启动浏览器istance,最后启动3个过程。

import ...
def parsing_pages(list_with_pages_to_parse):
global browser
#do stuff
if __name__ == '__main__':
browser = webdriver.Chrome(..., options = ...)
browser.get(...)
lists_with_pages_to_parse = [ [...], [...], [...] ]

pool.mp.Pool(3)
pool.map(parsing_pages, lists_with_pages_to_parse)
pool.close
pool.join

错误:

NameError: name 'browser' is not defined
Traceback (most recent call last):
File "c:Users39338Desktopprogram.py", line 323, in <module>
pool.map(parsing_pages, lists_with_pages_to_parse)
File "C:Users39338AppDataLocalProgramsPythonPython310libmultiprocessingpool.py", line 364, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "C:Users39338AppDataLocalProgramsPythonPython310libmultiprocessingpool.py", line 771, in get
raise self._value
NameError: name 'browser' is not defined

我使用global来允许";浏览器";在函数内部使用。我认为问题在于函数是在我创建";浏览器";,但当我试图把它放在主要部分之后时,我会得到一个错误,即调用时找不到函数。

__name__ != '__main__'(来自另一个:文件、线程或进程(时调用此函数将永远不会初始化browser。示例:

def f():
global browser
browser
if __name__ == '__main__':
browser = None
# Calling f will not raise an error
f()
def f():
global browser
browser
if __name__ != '__main__':
browser = None
# Calling f will will now raise an error
f()

我认为现在的情况是,您正在制作一个pool,并且池从另一个进程运行parsing_pages(),其中__name__ != '__main__'


您需要执行以下操作之一:

  • browser作为参数传递到函数中
  • if语句之外初始化浏览器

您应该添加print(__name__)来检查它的值。它可能会返回文件名,而不是__main__


问题解决后编辑:

当您在没有线程、处理池或来自其他文件的情况下运行文件时,__name__将等于'__main__'当您自己运行它时由于它是在多处理池中运行的,因此无法满足__name__ == '__main__'。因此,条件决不允许初始化browser

下面将对此进行更详细的讨论:

易于消化的视频(在Python2中,但这很好(

Python教程:if __name__=='__main__'(Youtube |8:42(

最详细的文章(堆栈溢出(

如果__name__==&quot__main__":做

';如果__name__=="__main__":';

如果你对感兴趣

什么';s是主函数的点和/或__name__=="__main__";签入Python?

首先:尽量避免使用全局关键字。随着代码变得越来越长和复杂,它会导致代码不稳定。

无论如何,您的代码说没有定义global,因为您没有在函数范围之外定义名为browser的全局变量。

删除全局关键字。您不需要它,因为您正在将浏览器返回到函数本身。

别忘了查看这些资源:

名称错误:全局名称';浏览器';未定义

https://python-forum.io/thread-12073.html

https://githubhot.com/repo/Matrix07ksa/Brute_Force/issues/24

https://github.com/MasonStooksbury/Free-Games/issues/41

相关内容

  • 没有找到相关文章

最新更新