我试图从Diluted EPS (ttm)
中找到适当的CSS选择器:
https://finance.yahoo.com/quote/AAPL/key-statistics?ltr=1]
。
为股票价格本身找到正确的CSS选择器很简单,我只是进入开发人员工具,寻找所需的值并复制CSS选择器。当我这样做寻找上面提到的值时,我收到以下内容:
div.Mb\(10px\):nth-child(4) > div:nth-child(4) > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(7) > td:nth-child(2)
然而,使用beautifulsoup模块,该行无法在Python中提供所需的值。
如果我真的用我的值复制该行,它会给出:
<td class="Fz(s) Fw(500) Ta(end)">8.31</td>
如何选择正确的CSS选择器来获取我的特定值?
我对Python相当新,请原谅这个问题。 提前致谢
答案 0 :(得分:0)
CSS选择器的设计仅用于选择元素,永远不会找到它们的内容,因为它们在样式中是必需的。使用CSS选择器,您只能告诉BeautifulSoup找到您要查找的元素,而不是元素的内容。但是,要检索元素的实际内容(标记之间的值),必须使用 contents
属性。
在您的情况下,您似乎希望使用以下代码来检索值(插入您自己的选择器):
soup.select("YOUR-SELECTOR-HERE").contents
>>> 8.33
你的选择器对我不起作用,但这可能有很多原因,所以你可以在那里填写你的工作选择器。
答案 1 :(得分:0)
在您提供的页面上,类属性不会单独标识页面上的元素。
@ felix-guo在评论中提到;你需要使用第n个元素遍历汤的树来访问数据。
尝试以下方面的内容:
all_tables = soup.find_all('table', {'class': 'table-qsp-stats'})
income_statements = all_tables[4]
diluted_eps = income_statements.find_all('tr')[6].find_all('td')[1].get_text()