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

如何用Python提取并格式化网页爬取的ACC的PCR数据?

实现方法

1. 调整爬取逻辑,定位目标数据所在的表格

目标数据(日期、ACC交易价格、PCR值)以表格形式展示,无需遍历所有<p>标签,直接定位页面中的数据表格即可。

2. 完整代码实现

import requests
from bs4 import BeautifulSoup

# 目标页面URL
url = "https://niftyinvest.com/put-call-ratio/ACC"
# 模拟浏览器请求头,避免被拦截
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"
}

try:
    # 发送请求并获取页面内容
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # 捕获请求异常
    soup = BeautifulSoup(response.text, "html.parser")

    # 定位到包含PCR数据的表格(根据页面实际结构调整class属性)
    pcr_table = soup.find("table", class_="table table-bordered")

    if not pcr_table:
        print("未找到目标数据表格,请检查页面结构是否更新")
    else:
        # 遍历数据行,跳过表头
        records = []
        for row in pcr_table.find_all("tr")[1:]:
            cells = row.find_all("td")
            if len(cells) >= 3:
                # 根据页面实际列顺序提取字段,此处假设第1列是日期,第2列是ACC价格,第3列是PCR
                date = cells[0].get_text(strip=True)
                acc_price = cells[1].get_text(strip=True)
                pcr_value = cells[2].get_text(strip=True)
                records.append({"日期": date, "ACC交易价格": acc_price, "PCR值": pcr_value})

        # 输出规整的Markdown表格
        print("| 日期 | ACC交易价格 | PCR值 |")
        print("|------|-------------|-------|")
        for record in records:
            print(f"| {record['日期']} | {record['ACC交易价格']} | {record['PCR值']} |")

except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")

3. 关键说明

  • 页面结构适配:如果运行时找不到表格,需打开目标页面,通过浏览器开发者工具查看表格的实际class或id属性,替换代码中对应的定位参数。
  • 字段顺序调整:若提取的字段与实际不符,检查表格列的顺序,修改cells的索引值(例如cells[0]对应第一列,依此类推)。
  • 异常处理:代码中加入了请求异常捕获,避免因网络问题或页面访问限制导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:33