Несмотря на правильно указанные тэг и класс, парсинг не работает
Хочу запарсить все названия компаний которые есть на бирже NYSE, но почему-то, несмотря на правильные тэг и класс, при парсинге данные не собираются. Ссылка: https://www.economicdata.ru/stocks.php?menu=stocks-by-exchange&exchange=NYSE&tname=New+York+Stock+Exchange Вот код:
url = 'https://www.economicdata.ru/stocks.php?menu=stocks-by-exchange&exchange=NYSE&tname=New+York+Stock+Exchange&page=1'
response = requests.get(url, headers=HEADERS)
html_data = bs(response.text, features='html.parser')
corps = html_data.find_all('td', _class=' sorting_1')
corps = [corp.text for corp in corps]
print(corps)
Вывод программы : [ ]
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
В том виде, как вы хотите парсить эту страницу, вам нужно, чтобы работал JavaScript, классы расставляет похоже он. Для этого вам нужно использовать Selenium.
Но поскольку на сайте, как я вижу, присутствуют табличные данные, то можно использовать для парсинга модуль Pandas, он сам достанет все данные из таблички в удобном виде:
import pandas as pd
url = 'https://www.economicdata.ru/stocks.php?menu=stocks-by-exchange&exchange=NYSE&tname=New+York+Stock+Exchange&page='
data = []
for i in range(1,10000):
print(i, end=',')
df = pd.read_html(url+str(i))[0]
if not df.shape[0]:
break
data.append(df)
print()
all_df = pd.concat(data, ignore_index=True)
print(all_df['Название компании'].values)
Вывод:
['Agilent Technologies, Inc.' 'Alcoa Corporation' 'AAC Holdings, Inc.' ...
'Zoetis Inc.' 'Zuora, Inc.' 'Zymeworks Inc.']
