Соскоб со страниц по той же ссылке - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь почерпнуть некоторую информацию с этого сайта: 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

Любой вклад будет высоко оценен.

1 Ответ

1 голос
/ 09 января 2020

Чтобы получить Om bolaget пакет, вы должны получить ntag from https://www.nordnet.se/api/2/login/anonymous response headers. You can take it once and use later in other requests. Best way is to use запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...