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

使用Python Selenium获取动态生成内容失败的技术求助

搞定雅虎财经「Recommended Rating」爬取问题

嘿,作为Selenium新手碰到这种动态加载内容的坑太正常了,我来帮你拆解解决方案:

为啥你之前的方法不行?

你遇到的核心问题是:「Recommended Rating」是页面加载完成后,通过JavaScript动态渲染出来的。time.sleep(10)这种固定等待不够稳定(比如网络慢的时候,10秒可能还没加载完),而且你用的层级式CSS选择器太脆弱,页面布局一改动就失效;另外直接打印page_source拿到的是服务器返回的初始HTML,根本没包含动态生成的内容。

靠谱的解决步骤

1. 用「显式等待」替代固定sleep

别再用time.sleep()了,改用WebDriverWait等待元素真正加载完成,这是Selenium处理动态内容的标准操作:

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://finance.yahoo.com/quote/FB')

try:
    # 最多等待20秒,直到目标元素可见
    rating_element = WebDriverWait(driver, 20).until(
        EC.visibility_of_element_located(
            # 用更稳定的属性定位,这个data-test是前端专门留的标识,不容易变
            (By.CSS_SELECTOR, 'div[data-test="rec-rating"] span')
        )
    )
    print(f"Recommended Rating: {rating_element.text}")
finally:
    # 不管成功失败,最后都关闭浏览器
    driver.quit()

2. 选对元素定位器

我用的div[data-test="rec-rating"] span比你之前的冗长选择器靠谱多了——这类data-test属性是前端为测试/爬虫预留的,不会随便改动,而你之前用的#Col2-4-QuoteModule-Proxy > div > section > div > div > div依赖页面层级,只要页面布局微调就会失效。

3. 确认元素位置的小技巧

以后找元素别用「查看源代码」,要打开Chrome的「开发者工具」(F12)切换到「Elements」面板,这里显示的是渲染后的实时DOM,你可以直接在里面搜索data-test="rec-rating",就能看到目标元素的真实结构。

4. 应对可能的反爬

如果还是拿不到内容,大概率是雅虎财经识别出你在用Selenium了,给Chrome加几个参数模拟正常浏览器就行:

from selenium import webdriver

options = webdriver.ChromeOptions()
# 禁用自动化识别
options.add_argument('--disable-blink-features=AutomationControlled')
# 模拟正常用户代理
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')

driver = webdriver.Chrome(options=options)
driver.get('https://finance.yahoo.com/quote/FB')
# 后面的等待和定位代码和之前一样

这样网站就不容易把你当成爬虫了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:33:00