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

Python爬虫技术问询:如何为每条董事会成员记录添加对应爬取所用的股票代码

如何为爬取的董事会成员数据添加对应股票代码列?

嘿,作为Python新手遇到这个问题太正常了,其实解决思路特别直接——让每条爬取到的董事会成员记录,和当前遍历的股票代码绑定在一起就行,下面给你两种可行方案,优先推荐第一种,高效又直观:

方案一:爬取时直接绑定股票代码(推荐)

你只需要在把每条记录添加到总列表data之前,把当前循环的ticker追加到这条记录的末尾。这样每条子列表自然就包含了对应的股票代码,后续转成DataFrame时直接指定列名即可。

修改后的完整代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd

data = []
tickers= ['MKL','FB','AAPL','ADBE']
headers = {}  # 这里补充你已有的header变量

for ticker in tickers:
    # 用f-string拼接URL更简洁可读
    page = requests.get(f'https://www.wsj.com/market-data/quotes/{ticker}/company-people', headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')
    table = soup.find_all("table", {"class":"cr_dataTable cr_board_table"})[-1]
    table_rows = table.find_all('tr')
    for tr in table_rows:
        td = tr.find_all('td')
        # 加strip()清理原始文本前后的多余空格,优化数据质量
        row = [td_item.text.strip() for td_item in td]
        row.append(ticker)  # 关键一步:把当前股票代码追加到这条记录里
        data.append(row)

# 转换为DataFrame并指定列名
df = pd.DataFrame(data, columns=['Name/Title', 'Current Board Membership', 'Ticker'])
print(df.head())

改动细节说明:

  1. 用f-string拼接URL,比字符串相加更简洁易读
  2. 给提取的文本加了strip(),去掉原始数据里多余的前后空格
  3. 核心新增代码row.append(ticker),让每条记录和对应股票代码直接绑定

方案二:已生成data后,转DataFrame再补全股票代码

如果已经有了不带股票代码的data列表,也可以通过统计每个股票代码对应的记录数,生成一个重复对应次数的ticker列表,再赋值给DataFrame的新列。不过这种方法需要二次请求页面统计数量,效率不如方案一:

import pandas as pd

# 假设已经有了原始的data列表
tickers= ['MKL','FB','AAPL','ADBE']
headers = {}  # 补充你的header变量

# 先统计每个ticker对应的记录数
ticker_counts = []
for ticker in tickers:
    page = requests.get(f'https://www.wsj.com/market-data/quotes/{ticker}/company-people', headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')
    table = soup.find_all("table", {"class":"cr_dataTable cr_board_table"})[-1]
    ticker_counts.append(len(table.find_all('tr')))

# 生成对应重复次数的ticker列表
ticker_col = []
for ticker, count in zip(tickers, ticker_counts):
    ticker_col.extend([ticker]*count)

# 转成DataFrame并添加新列
df = pd.DataFrame(data, columns=['Name/Title', 'Current Board Membership'])
df['Ticker'] = ticker_col
print(df.head())

显然方案一更省心,不需要额外请求页面统计数量,直接在第一次爬取时就完成数据绑定,后续拆分列、上传CRM等操作也能顺畅进行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:02:28