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

使用Python requests请求纳斯达克网站获取股息数据时挂起

问题分析与解决办法

你的脚本挂起并非网站封禁了requests模块,而是纳斯达克的反爬机制识别出请求来自脚本,通过挂起连接的方式拦截(这是反爬的常见手段,区别于直接返回错误码)。请求谷歌正常是因为其反爬策略相对宽松,未触发拦截规则。

可行解决办法

1. 添加模拟浏览器的请求头

默认requests的请求头会暴露脚本身份,添加浏览器标识的User-Agent可绕过基础检测,同时建议设置超时避免无限挂起:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}
dividends_url = "https://www.nasdaq.com/market-activity/stocks/hd/dividend-history"

response = requests.get(dividends_url, headers=headers, timeout=10)
print(response.status_code)

2. 处理动态加载内容

纳斯达克的股息数据大概率是通过JavaScript动态渲染的,直接用requests只能拿到静态HTML框架,无法获取实际数据。可使用浏览器自动化工具模拟渲染:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless=new")  # 无头模式,不显示浏览器窗口
driver = webdriver.Chrome(options=options)

driver.get("https://www.nasdaq.com/market-activity/stocks/hd/dividend-history")
driver.implicitly_wait(10)  # 等待数据加载完成
page_source = driver.page_source
# 后续可从page_source中提取目标数据
driver.quit()

3. 遵守爬虫协议

先查看纳斯达克的robots.txt文件,确认目标爬取路径是否被允许,避免违反网站规则。

4. 控制请求频率

若需多次请求,添加随机间隔时间,避免因请求过于频繁触发频率限制:

import time
import random

# 每次请求后随机等待1-3秒
time.sleep(random.uniform(1, 3))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:50:32