如何根据API调用中使用的值迭代并添加到更大的列表中的每个嵌套列表?



我一直在绞尽脑汁想找出一个解决方案,我认为这可能是一个相对简单的问题-然而,我是python的新手,并且需要花费很长时间才能取得最小的进展(这是使它有趣的一部分,嗯)。

这是我项目的目标:

  1. 从wsj的本页删除所有董事会成员:https://www.wsj.com/market-data/quotes/AAPL/company-people
  2. 取代"AAPL"在url请求中使用一个变量,然后遍历以从多个公司(它是一个两列表)中提取董事会成员
  3. 放入数据框架,使其对新手友好,以便我可以拆分颜色,添加颜色,上传到CRM等

到目前为止,我已经能够使用股票报价器列表从页面上抓取两列表,迭代并作为嵌套列表添加到更大的列表中。

转换为df,得到两列-名称/标题,当前董事会成员

我问题:我需要创建第三列(股票报价器),用于在嵌套列表中查找要开始的表。

下面是我的代码供参考(省略头变量以节省空间-如果我应该张贴):

data = []
tickers= ['MKL','FB','AAPL','ADBE']
for ticker in tickers:
page = requests.get('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')
row = [tr.text for tr in td]
data.append(row)
print(data)

这段代码打印列表"data; "它由两部分嵌套列表填充,如下所示:

[['  Thomas Sinnickson Gayner  Co-Chief Executive Officer & Director ',
' Colfax Corp., Markel Corp., The Community Foundation, Inc., Cable One, Inc., Graham Holdings Co., WP Co. LLC, Diamond Healthcare Corp. '],
['  Richard Reeves Whitt  Co-Chief Executive Officer & Director ',
' Markel Corp., Virginia Foundation for Independent Colleges, World Affairs Council of Greater Richmond, Markel Capital Holdings Ltd., Alterra Capital America Ltd. '],
['  Anthony F. Markel  Vice Chairman ', ' Markel Corp. '],
['  Anne Lynne Puckett  Director ',
' Markel Corp., Simsmart Technologies, Inc., Howden Alphair Ventilating Systems, Inc., Howden Holdings Ltd., CAST Ltd., ESAB Group Russia Ltd., Victor Technologies Ltd., Victor Technologies (UK) Ltd., Exelvia Co., James Howden & Co. Ltd., Howden UK Ltd., Howden Compressors Ltd., Gas-Arc Group Ltd., H UK Engineering Ltd. ']] 

如何将最初使用的变量(股票报价机)附加到每个嵌套列表中?还是转换成df然后这样相加?

不幸的是,股票报价机列表中的每个变量都有5-12个值,所以它不是1-1。不能仅仅将股票报价器列表应用为df中的新列,因为,例如,在大列表中可能有40个嵌套列表,但只有4个股票报价器。

任何帮助将不胜感激-谢谢。

只需在将行添加到列表之前将自动报价器变量添加到行,&;data.&;

td = tr.find_all('td')
row = [tr.text for tr in td]
row.append(ticker)
data.append(row)

最新更新