我正尝试使用BeautifulSoup将Yahoo财务中的EPS估算值,EPS收益历史记录(第1和第3表)抓取到现有的csv文件中。 https://uk.finance.yahoo.com/quote/MSFT/analysis?p=MSFT
我已经开始了,但是正在努力获取所需的确切数据,我想我将需要一个遍历行和td标签的for循环。
url = 'https://uk.finance.yahoo.com/quote/' + index +'/analysis?p=' + index
response = get(url)
soup = BeautifulSoup(response.text, 'html.parser')
EP = soup.find('table', attrs={'class':"W(100%)"})
print(EP)
这似乎只是获取第一个表,但是我不确定如何编写循环以获取适当的数据。查看HTML,第一张表和第三张表看起来都具有相同的类名,因此我不能仅凭它去适当的表。
我的另一个想法是搜索页面上的所有表并将它们放入列表中。然后,我可以选择正确的索引,但是我不确定如何在代码中做到这一点。
答案 0 :(得分:0)
将soup.find
替换为soup.find_all()
。它返回所有表的列表,然后可以对其进行迭代。
EPs = soup.find_all('table', attrs={'class':"W(100%)"})
for EP in EPs:
...
如果您要查找的是第一张表和第三张表,则分别为EPs[0]
和EPs[2]
。