You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python或Curl下载纽交所股票代码列表?Curl命令问题解决

解决NYSE股票代码列表下载问题

我来帮你搞定这个问题!你遇到的情况主要是两个原因导致的:一是bash shell里的URL参数没处理好,二是纳斯达克网站的反爬机制拦截了默认的curl请求标识。下面分别给出curl和Python的可行方案:

使用curl实现下载

你之前的命令失败,首先是因为URL里的&在bash中会被解析成后台运行的符号,导致render=download被当成了新的命令;其次,网站会识别默认的curl User-Agent并拦截请求。解决方法如下:

把整个URL用双引号包裹,同时添加模拟浏览器的User-Agent参数:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "http://www.nasdaq.com/screening/companies-by-industry.aspx?exchange=NYSE&render=download" -o nyse_stocks.csv
  • -A参数用来设置请求的User-Agent,模拟浏览器访问,避免被反爬拦截
  • 双引号包裹URL,确保&符号被正确解析为URL参数的分隔符
  • -o参数指定保存的文件名,这里保存为nyse_stocks.csv

使用Python实现自动下载

如果要做成每日自动运行的程序,Python会更灵活,推荐用requests库来实现:

  1. 先安装依赖库(如果没装过的话):
pip install requests
  1. 编写下载脚本:
import requests
from datetime import datetime  # 可选,用来给文件名加上日期,方便每日归档

# 目标URL
url = "http://www.nasdaq.com/screening/companies-by-industry.aspx?exchange=NYSE&render=download"

# 模拟浏览器的请求头,关键是User-Agent
headers = {
    "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",
    "Accept-Language": "en-US,en;q=0.9"
}

try:
    # 发送GET请求
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # 如果请求失败(比如403、404),抛出异常

    # 可选:给文件名加上当前日期,方便区分每日数据
    today_date = datetime.now().strftime("%Y%m%d")
    filename = f"nyse_stocks_{today_date}.csv"

    # 保存文件
    with open(filename, "wb") as f:
        f.write(response.content)

    print(f"成功下载NYSE股票代码列表到文件:{filename}")
except Exception as e:
    print(f"下载失败,错误信息:{e}")
  1. 设置每日自动运行:
    • 如果你用Windows,可以创建任务计划,每天定时运行这个Python脚本
    • 如果你用Linux/macOS,可以用crontab添加定时任务,比如每天凌晨2点运行:0 2 * * * /usr/bin/python3 /path/to/your/script.py

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

火山引擎 最新活动