【发布时间】:2021-04-18 03:34:39
【问题描述】:
我正在尝试从雅虎财经获取共同基金的年度业绩。他们的页面已设置,因此我想要的数据与许多其他行具有相同的类。没有唯一标识符。我可以索引到我想要的行,但使用不同的股票代码会导致页面发生变化,这也会改变我需要使用的索引,因此这将不起作用。
我想我可以在页面中搜索一些独特的文本,在本例中为“2010”,然后在我找到的“2010”值旁边获取“data-reactid="205"”数字,然后我可以递增“data-reactid”数字来找到我想要的代码行。希望这是有道理的。
这是我目前的测试代码:
import bs4
import requests
from bs4 import BeautifulSoup
url = requests.get('https://finance.yahoo.com/quote/APGAX/performance?p=APGAX')
soup = bs4.BeautifulSoup(url.text, features="html.parser")
ree = soup.find_all('span',attrs={"class": "W(10%) D(b) Fl(start) Ta(s)"})
print(ree)
运行该代码会导致页面出现大约 30 条不同的行(我试图将它们粘贴到此处,但该网站更改了我粘贴的行,因此我无法向您显示。
我要搜索的“2010”大约是列表下方的 1/3,而同一行中的“data-reactid="205"” 数字。问题是我不知道如何在结果中搜索以找到我想要的特定行。
有人对如何实现这一点有任何想法吗?谢谢您的帮助。对不起,我的描述不好。我对此很陌生,但正在尝试学习 Python。
【问题讨论】:
标签: python beautifulsoup screen-scraping