Вы правильно очистили все строки. Но, чтобы получить только символ и имя, вам придется циклически перебирать строки по одной и получать их в каждой итерации. Если вы щелкните правой кнопкой мыши и осмотрите какой-либо символ, вы увидите, что текст находится внутри тега <a>
. Соответствующие теги <a>
имеют следующий формат:
<a href="/quote/S?p=S" title="Sprint Corporation" data-symbol="S" class="Fw(b)" data-reactid="57">S</a>
Как видите, имя включено в тег с атрибутом title
. Таким образом, чтобы получить и символ, и имя, вам нужно только получить тег. Поскольку это тег first <a>
внутри строки, вы можете просто получить его, используя row.find('a')
.
Полный код:
import requests
from bs4 import BeautifulSoup
r = requests.get('https://finance.yahoo.com/trending-tickers')
soup = BeautifulSoup(r.text, 'lxml')
table = soup.find('table', class_='yfinlist-table W(100%) BdB Bdc($tableBorderGray)')
for row in table.find_all('tr')[1:]:
a_tag = row.find('a')
symbol = a_tag.text
name = a_tag['title']
print(symbol, name)
Выход:
S Sprint Corporation
TMUS T-Mobile US, Inc.
AAPL Apple Inc.
^HSI HANG SENG INDEX
^N225 Nikkei 225
000001.SS SSE Composite Index
WMT Walmart Inc.
NKE NIKE, Inc.
^FTSE FTSE 100
^AORD ALL ORDINARIES
BTC-USD Bitcoin USD
CL=F Crude Oil
MCD McDonald's Corporation
AUDUSD=X AUD/USD
KO The Coca-Cola Company
DIS The Walt Disney Company
GBPUSD=X GBP/USD
GERN Geron Corporation
^NSEI NIFTY 50
TSLA Tesla, Inc.
VZ Verizon Communications Inc.
EURUSD=X EUR/USD
^BSESN S&P BSE SENSEX
GC=F Gold
0700.HK Tencent Holdings Limited
^KS11 KOSPI Composite Index