Je sais que c'est un peu idiot mais j'ai essayé de sortir le texte des graphiques de ce site Web

Quelqu'un peut-il s'il vous plaît me dire comment je peux obtenir les données

Je l'ai essayé avec python et BeautifulSoup comme ceci :

seite = requests.get(url)
bs4_seite = None
if seite.status_code == 200:
    bs4_seite = bs4.BeautifulSoup(seite.content, 'html.parser')
else:
    print('Seite konnte nicht geladen werden.', url)
pushList = bs4_seite.find('div', {'class':'pieChart'})

Mais ça ne me donne pas le contenu des childelements, ça ne retourne rien

1
MikeMike 12 nov. 2020 à 14:03

1 réponse

Meilleure réponse

Ceux-ci sont chargés dynamiquement, donc BeautifulSoup ne les voit pas, mais vous pouvez récupérer les données avec une requête POST.

Voici comment:

import requests


headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36",
    'x-requested-with': 'XMLHttpRequest',
}

url = "https://www.onvista.de/etf/ajax/etfBreakdownList"

types = ["industries", "countries", "instruments", "currencies"]

for type_ in types:
    data = requests.post(url, data={"isin": "IE00BYX2JD69", "type": type_}, headers=headers)
    print(data.json())

Production:

[['Sonstige Konsumgüter', 23.64], ['IT-Software (Telekommunikation und Internet)', 21.36], ['Gesundheitsdienstleistungen', 14.91], ['Industrie', 14.72], ['Finanzdienstleistungen', 13.43], ['Rohstoffe', 4.07], ['Immobilien', 3.68], ['Energie', 2.38], ['Konglomerate', 0.94], ['Versorger', 0.45], ['Barmittel', 0.27], ['Andere', 0.15000000000001]]
[['USA', 56.12], ['Japan', 9.73], ['Deutschland', 4.53], ['Schweiz', 4.46], ['Kanada', 4.07], ['Großbritannien', 3.57], ['Frankreich', 3.04], ['Irland', 2.33], ['Australien', 2.21], ['Niederlande', 2.21], ['Dänemark', 2.18], ['Hong Kong', 0.88], ['Schweden', 0.88], ['Spanien', 0.55], ['Argentinien', 0.53], ['Italien', 0.48], ['Singapur', 0.44], ['Finnland', 0.37], ['Neuseeland', 0.3], ['Kasse', 0.27], ['Norwegen', 0.24], ['Belgien', 0.22], ['Österreich', 0.1], ['Andere', 0.29000000000003]]
[['Aktien', 99.58], ['Cash', 0.27], ['Fonds', 0.15]]
[['US Dollar', 60.26], ['Euro', 12.92], ['Japanische Yen', 9.73], ['Schweizer Franken', 3.85], ['Kanadische Dollar', 3.54], ['Pfund Sterling', 2.23], ['Australische Dollar', 2.21], ['Dänische Kronen', 2.18], ['Hongkong-Dollar', 0.88], ['Schwedische Krone', 0.8], ['Singapur-Dollar', 0.44], ['Neuseeland-Dollar', 0.3], ['Norwegische Krone', 0.24], ['Andere', 0.42000000000002]]
0
baduker 12 nov. 2020 à 11:09