You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium+Python报错NameError:name 'page_source' is not defined 求助

解决Selenium爬取网页邮箱时的NameError问题

错误原因

你触发的NameError: name 'page_source' is not defined是因为代码中直接引用了未定义的page_source变量。在Selenium中,网页源码需要通过你初始化的浏览器实例(也就是代码里的s)来获取,对应的属性是driver.page_source,这里就是s.page_source。

另外补充一个潜在问题:直接调用s.get()后立即获取源码,可能会因为页面未完全加载导致爬取不到内容,建议添加显式等待确保页面加载完成。

修正后的代码

import re
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

ser = Service(r"C:\Users\czoca\PycharmProjects\pythonProject4\chromedriver.exe")
op = webdriver.ChromeOptions()
s = webdriver.Chrome(service=ser, options=op)
s.get('https://autosalpa.fi/fi/')

# 显式等待,确保页面核心元素加载完成
WebDriverWait(s, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))

EMAIL_REGEX = r'''(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])'''

list_of_emails = []

# 关键改动:通过浏览器实例获取页面源码
for re_match in re.finditer(EMAIL_REGEX, s.page_source):
    list_of_emails.append(re_match.group())

for i, email in enumerate(list_of_emails):
    print(f'{i+1}:{email}')

# 关闭浏览器释放资源
s.quit()

关键改动说明

  • 将未定义的page_source替换为s.page_source,正确获取当前页面的HTML源码
  • 添加显式等待逻辑,避免页面未加载完成就执行抓取操作
  • 代码末尾添加s.quit(),确保浏览器进程正常关闭

内容的提问来源于stack exchange,提问作者Nolgath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:55:17