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

如何将Selenium爬虫抓取的评级数据追加存入Pandas DataFrame

问题排查

你当前的代码无法生成DataFrame主要有三个问题:

  1. 存储数据的变量定义在option遍历循环内部,每次循环都会清空上一次的抓取结果,无法累积全量数据
  2. 切换iframe读取数据后没有切回主页面上下文,后续循环会找不到option元素直接报错
  3. 没有定义结构化的字段映射规则,无法直接把爬取到的列表数据转为DataFrame格式

修正后可直接生成DataFrame的代码

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time

# 路径用原始字符串避免Windows系统下转义字符报错
browser = webdriver.Chrome(r'F:\chromedriver.exe')
browser.get("https://capitalonebank2.bluematrix.com/sellside/Disclosures.action")

# 定义DataFrame对应的字段名称
columns = ['券商名称', '评级类型', '评级总数量', '评级总占比', '关联投行服务数量', '关联投行服务占比']
# 全量数据存储列表需放在循环外部,避免被清空
all_data = []

for title in browser.find_elements_by_css_selector('option'):
    broker_name = title.text.strip()
    title.click()
    time.sleep(1)
    # 切换到数据所在iframe
    browser.switch_to.frame(browser.find_elements_by_css_selector("iframe")[1])
    table = browser.find_element_by_css_selector("table table")
    
    soup = BeautifulSoup(table.get_attribute("innerHTML"), "lxml")
    # 按行顺序对应三类评级
    rating_types = ["BUY", "HOLD", "SELL"]
    for index, row in enumerate(soup.select("tr")[-4:-1]):
        info_list = row.select("td")
        count = info_list[1].text.strip()
        percent = info_list[2].text.strip()
        ib_count = info_list[4].text.strip()
        ib_percent = info_list[5].text.strip()
        # 组装单条数据加入总存储列表
        all_data.append([broker_name, rating_types[index], count, percent, ib_count, ib_percent])
    
    # 切回主页面,保障后续循环正常执行
    browser.switch_to.default_content()

# 直接生成DataFrame
rating_df = pd.DataFrame(all_data, columns=columns)
# 可选:导出为csv文件本地留存,使用utf_8_sig编码避免中文乱码
rating_df.to_csv("券商评级数据.csv", index=False, encoding="utf_8_sig")
# 打印前10行校验数据
print(rating_df.head(10))

实现说明

  • 提前在循环外部定义全量数据存储容器,累积所有券商的三类评级数据
  • 每次读取完iframe内数据后切回主页面上下文,解决循环遍历中断的问题
  • 给每条数据绑定对应的券商名称、评级类型字段,结构化程度更高,可直接用pandas构造函数生成标准DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:15:03