使用Selenium爬取重Java网站返回空值的问题如何解决
Selenium爬取动态页面空值问题解决
核心错误原因
find_elements_by_class_name仅支持传入单个类名,你输入的多个空格分隔的类名会被判定为一个整体类名,无法匹配到对应元素- 目标页面是JavaScript动态渲染的,页面加载完成后目标数据还需要异步请求渲染,直接调用查找方法时元素还未生成
find_elements返回的是元素对象列表,直接打印不会输出文本内容,需要调用元素的.text属性取值
修正后可运行代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化浏览器 driver = webdriver.Chrome() driver.get("https://explorer.helium.com/accounts/13pm9juR7WPjAf7EVWgq5EQAaRTppu2EE7ReuEL9jpkHQMJCjn9") try: # 显式等待10秒,直到目标元素加载完成 target_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located( # 多类名匹配改用CSS选择器,类名前加.,空格替换为. (By.CSS_SELECTOR, '.text-base.text-gray-600.mb-1.tracking-tight.w-full.break-all') ) ) # 提取元素文本内容 earnings = target_element.text print(earnings) finally: # 保证无论是否报错都关闭浏览器 driver.quit()
额外优化建议
如果后续页面类名发生变更导致定位失效,可以改用xpath结合文本特征定位,或者先定位父级固定容器再向下查找目标元素,提升代码稳定性。
内容的提问来源于stack exchange,提问作者Pierce Kingston
相关产品推荐
相关产品推荐

