漂亮的汤来抓取数据

时间:2020-06-07 17:33:25

标签: python beautifulsoup

我正尝试使用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,第一张表和第三张表看起来都具有相同的类名,因此我不能仅凭它去适当的表。

我的另一个想法是搜索页面上的所有表并将它们放入列表中。然后,我可以选择正确的索引,但是我不确定如何在代码中做到这一点。

1 个答案:

答案 0 :(得分:0)

soup.find替换为soup.find_all()。它返回所有表的列表,然后可以对其进行迭代。

EPs = soup.find_all('table', attrs={'class':"W(100%)"})
for EP in EPs:
    ...

如果您要查找的是第一张表和第三张表,则分别为EPs[0]EPs[2]