Я пытаюсь почерпнуть некоторую информацию с этого сайта: https://www.nordnet.se/marknaden/aktiekurser?sortField=name&sortOrder=asc&exchangeCountry=SE&exchangeList=se%3Alargecapstockholmsek.
То, что я хочу сделать, - это получить информацию по секторам для каждой компании, которая представлена в таблице «Om bolaget» на страницах, определяемых компанией c. Более конкретно, информация, которую я хочу получить, находится в полях «Сектор» и «Филиал». Ссылки на указанные компанией страницы c можно легко получить с помощью requests
и BeautifulSoup
в python.
При отправке запроса на получение этих ссылок ответ иногда содержит требуемую информацию в следующих формах "сектор: ..." и "сектор_группа: ...", но не всегда. Один пример, когда это работает, - для Латура https://www.nordnet.se/marknaden/aktiekurser/16099736-latour-investmentab-b, а один пример, когда это не работает, - для EQT https://www.nordnet.se/marknaden/aktiekurser/17117956-eqt.
Обратите внимание, что я вижу, что XHR-запрос (POST-запрос) выполняется при нажатии "Om bolaget", но я не уверен, как его использовать.
Код, который я использую Чтобы получить информацию о секторе со страницы, специфичной для компании, укажите c ниже:
import requests
from bs4 import BeautifulSoup
import re
def get_sector(url):
sector, sector_group = None, None
resp = requests.get(url)
soup = BeautifulSoup(resp.text, 'html.parser')
tags = soup.findAll('script')
for tag in tags:
content = tag.get_text()
content = content.replace('\\', '')
if '__initialState__' not in content:
continue
try:
sector = re.findall(r'"sector":"\w+"', content)[0]
sector = json.loads('{' + sector + '}')
sector = sector['sector']
except IndexError:
print(url)
print('Sector not found')
try:
sector_group = re.findall(r'"sector_group":"\w+"', content)[0]
sector_group = json.loads('{' + sector_group + '}')
sector_group = sector_group['sector_group']
except IndexError:
print('Sector Group not found')
break
return sector, sector_group
Любой вклад будет высоко оценен.