Несмотря на правильно указанные тэг и класс, парсинг не работает

Хочу запарсить все названия компаний которые есть на бирже 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.']
→ Ссылка