我一直在绞尽脑汁想找出一个解决方案,我认为这可能是一个相对简单的问题-然而,我是python的新手,并且需要花费很长时间才能取得最小的进展(这是使它有趣的一部分,嗯)。
这是我项目的目标:
- 从wsj的本页删除所有董事会成员:https://www.wsj.com/market-data/quotes/AAPL/company-people
- 取代"AAPL"在url请求中使用一个变量,然后遍历以从多个公司(它是一个两列表)中提取董事会成员
- 放入数据框架,使其对新手友好,以便我可以拆分颜色,添加颜色,上传到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)