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

BeautifulSoup带Cookie爬取dividendinvestor无法获取正确信息如何解决

解决方案

你遇到的问题核心原因是dividendinvestor.com的目标数据属于JS动态渲染内容,直接用requests请求拿到的只是初始的静态HTML骨架,包含"Consecutive Dividend Increases"的业务数据是页面加载完成后,由前端JS异步调用后端接口获取后再渲染到页面上的,BeautifulSoup只能解析静态加载的内容,自然无法匹配到目标字段。

另外你现有的代码存在两处基础错误:

  • 没有实际发送请求的逻辑,缺少r_get = requests.get(url, headers=headers)这行代码
  • 最后的print语句缺少右闭合括号

方案1:使用无头浏览器模拟页面渲染(实现成本低)

直接用Selenium、Playwright这类自动化测试工具模拟浏览器访问,等页面全量渲染完成后再提取元素内容,不需要额外抓包分析接口。
示例代码(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

# 初始化浏览器,这里用Chrome无头模式
options = webdriver.ChromeOptions()
options.add_argument('--headless=new')
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0')
driver = webdriver.Chrome(options=options)

url = 'https://www.dividendinvestor.com/dividend-quote/intc/'
driver.get(url)

# 等待目标元素加载完成,最长等待10秒
try:
    target_ele = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[contains(text(), "Consecutive Dividend Increases")]/following-sibling::span'))
    )
    print("连续股息增长年数:", target_ele.text.strip())
finally:
    driver.quit()

方案2:直接调用后端数据接口(运行效率高)

打开浏览器开发者工具的「网络」面板,筛选「Fetch/XHR」请求,刷新页面后找到返回股息相关数据的接口,直接请求该接口获取结构化的JSON数据,不需要解析HTML,运行速度远高于无头浏览器。
操作要点:

  • 对照接口返回的JSON内容确认包含目标字段后,复制该接口的请求URL、请求头、请求参数
  • 在Python的requests请求中补齐对应的参数即可直接拿到数据,注意部分接口可能有签名、时效校验,复制的请求头不要缺省鉴权相关字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:30:01