Python 在结果中优化搜索组

Python 在结果中优化搜索组,python,beautifulsoup,screen-scraping,Python,Beautifulsoup,Screen Scraping,我正试图从雅虎金融(Yahoo finance)获得共同基金的年度业绩。他们的页面已经设置好了,所以我想要的数据和其他行在同一个类中。没有唯一标识符。我可以索引到我想要的行,但使用不同的股票代码会导致页面更改,这也会更改我需要使用的索引,因此无法工作 我想我可以在页面中搜索一些唯一的文本,在本例中是“2010”,然后抓取我找到的“2010”值旁边的“data reactid=“205”编号,然后我可以增加“data reactid”编号以找到我想要的代码行。希望这是有道理的 这是我目前为止的测试

我正试图从雅虎金融(Yahoo finance)获得共同基金的年度业绩。他们的页面已经设置好了,所以我想要的数据和其他行在同一个类中。没有唯一标识符。我可以索引到我想要的行,但使用不同的股票代码会导致页面更改,这也会更改我需要使用的索引,因此无法工作

我想我可以在页面中搜索一些唯一的文本,在本例中是“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”大约是列表的三分之一,而“data reactid=“205”则是同一行中的数字。问题是我不知道如何在结果中搜索以找到我想要的特定行


有人对如何实现这一点有什么想法吗?谢谢你的帮助。对不起,我的描述不好。我在这方面很新,但正在尝试学习Python。

我建议你使用Yahoo Finance API,而不是解析网页。有。

我希望这就是你想要的,但请清楚地描述问题

不要用“文本”绑定url对象,而是用“内容”绑定它

要在特定行中搜索,最好首先检查html标记,以了解哪个标记包含您想要的内容,包括正确的类名或id名

results = soup.find_all('span', class_='W(10%) D(b) Fl(start) Ta(s)')
print(results)


谢谢你的推荐。我查看了雅虎金融API,它看起来非常好,但我看不到在共同基金和ETF上获得年度业绩的能力。我不想做algo交易(在这一点上)因此,每日价格数据对我没有帮助。感谢您的回复,很抱歉我不清楚我在尝试做什么。我正在尝试获取多个共同基金和ETF从2010年到2020年的年度回报,并将其放入Excel电子表格中。问题是Yahoo Finance网页上的许多字段具有相同的标签和类别e、 我可以使用一个索引来选择我想要的,但是网页会根据它是基金还是ETF而变化,因此索引也会变化。我想如果我可以在该标签子集中搜索特定表(在本例中为2010年)中唯一的内容,那么我可以使用“data reactid=”205,并将其递增,然后使用“data reactid=”209再次搜索"收集当年的年度绩效,在本例中为9.41%。我希望这比昨晚更清楚。我试图解释我要做的事情。我四处看了看,试图理解与.content而不是.text的绑定。如果我理解,与内容的绑定是与非文本对象的字节绑定。我不确定在这种情况下,这对我很有帮助。
results = soup.find_all('span', class_='W(10%) D(b) Fl(start) Ta(s)')
print(results)