使用Python+Selenium爬取h2标签时循环触发NameError的问题排查
问题分析与解决方案
嘿,我来帮你梳理下代码里的问题~
错误原因
你遇到的NameError: name 'temp' is not defined,核心问题有两个:
- 循环变量未提前定义:你直接写了
for i in temp:,但temp在这行代码之前根本没被赋值,Python不知道它指代什么,自然会报错。 - 方法用错导致逻辑无效:就算你提前定义了
temp,你用的是find_element_by_tag_name('h2')(单数形式)——这个方法只会返回页面上第一个匹配的h2元素,循环也没法拿到所有h2标签。
修正后的代码
要抓取所有h2标签并打印,你需要用复数形式的查找方法获取所有h2元素,再遍历这个元素列表:
# 第一步:获取页面上所有的h2元素(注意是elements复数) all_h2_elements = driver.find_elements_by_tag_name('h2') # 第二步:遍历每个h2元素,打印其文本内容 for h2 in all_h2_elements: print(h2.text)
额外说明
find_elements_by_tag_name会返回一个包含所有匹配元素的列表,你可以直接遍历这个列表拿到每个h2元素。- 如果某些h2标签可能没有文本内容,你可以加个简单判断避免打印空行:
for h2 in all_h2_elements: text = h2.text.strip() if text: print(text)
内容的提问来源于stack exchange,提问作者thedungepn
相关产品推荐
相关产品推荐

