【发布时间】:2021-10-18 23:44:26
【问题描述】:
我在 python 脚本中随机收到错误“NameError: name 'var1' is not defined”。这只是偶尔发生,但这是问题所在。我该如何解决这个问题?
for i in range(len(list)):
try:
driver.get(url)
innerHTML = driver.page_source
soup = BeautifulSoup(innerHTML, "html.parser")
for i in soup.select("#SOMETHING"):
global var1
var1= i.text
print(var1)
global URL
URL = driver.current_url
print(URL)
database.execute("INSERT INTO Database VALUES (?,?,?,?,?,?,?)", (str(var1), str(var2), str(var3), str(var4), str(var5), str(var6), str(var7)))
database.commit()
except:
pass
driver.close()
driver.quit()
【问题讨论】:
-
你能通过代码找出一条路径,
var1不会被赋值吗?我可以。 -
也许没有进入你声明变量的地方。
for i in soup.select("#SOMETHING"):所以当你调用database.execute("INSERT INTO Database VALUES (?,?,?,?,?,?,?)", (str(var1), str(var2), str(var3), str(var4), str(var5), str(var6), str(var7)))行中的变量时 var1 is not defined -
global在模块范围内不做任何事情。它用于在函数、方法等的全局范围内分配变量……全局变量仅在第一次分配时才存在。如果var1未定义,则意味着分配没有发生 -for循环没有任何要处理的内容。 -
soup.select("#SOMETHING")中没有选择任何内容时,您希望发生什么? -
var2 等也没有定义。他们将是你的下一个错误。您似乎期望从选择中获得 7 个值,而这些值是您插入的?您可以将它们放在一个列表中,如果该列表不是 len 7,则引发错误。
标签: python string variables var nameerror