0
votes

Extraire du texte de la portée

J'ai un problème concernant une balise d'enveloppe, qui n'a aucun identifiant ni classe. L'approche plus large consiste à extraire le texte entre "Article 1. Entreprise" à "Point 1a. Facteurs de risque" du lien ci-dessous. Toutefois, je ne peux pas comprendre un moyen de trouver cette partie, car la distance qu'elle est dans, n'a pas d'identification ni de classe I ne peut rechercher (seul le parent div se trouve la portée: div = soupe. ("div", {"id": "dynamic-xbrl-formulaire"}) code>.

Ce code ne fonctionne pas, tristement: #text = unicodedata.normaliser ('NFKD', soupe .get_text ()). Remplacez ('\ n', '') code> p>

Voici mon approche: p>

url = 'https://www.sec.gov/ix?doc=/Archives/edgar/data/934549/000093454919000017/actg2018123110-k.htm#s62CF0831C63E51C2BEF33F4163F1DE65'
raw = requests.get(url)
soup = BeautifulSoup(raw.content)

div = soup.find("span", {"id": ... })
print(div.txt)


0 commentaires

3 Réponses :


0
votes

Le contenu de cette page est chargé à partir de JavaScript , vous ne pouvez pas utiliser beauxoup pour cela. Utiliser sélénium à cet effet.


1 commentaires

Merci pour la réponse. Savez-vous quelle fonction j'ai besoin? Quelque chose avec "trouver"?



0
votes

Dans mon cas, je vérifie à l'aide de l'identifiant de la balise SPAN, cette mine résolue:

import requests
from bs4 import BeautifulSoup
URL = 'https://www.facebook.com/hackerv728'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
titles = soup.find_all('span', id='fb-timeline-cover-name')
for title in titles:
    print(title.text.strip())


1 commentaires

Merci, mais n'a pas travaillé. De plus, le Div.Text n'est pas une méthode valide.



1
votes

Comme @gagan dit, le contenu du site Web est chargé de JavaScript. Vous devez utiliser sélénium à l'aide de sélénium est plus puissant que l'autre fonction Python .J'ai utilisé ChromeRiver, donc si vous n'installez pas encore, vous pouvez l'installer dans

http://chromedriver.chromium.org/ xxx

Vous pouvez également obtenir toutes les sources xxx


1 commentaires

Hey, j'ai essayé l'approche de sélénium aussi bien avant, mais avec Find_elements_by_xpath , mais je n'ai pas été capable avec ce lien particulier (sec.gov) pour trouver n'importe quel div avec "Classe: Col-SM-12" ou "id = dynamic-xbrl-forme". Bien que la DIV avec ces attributs soit clairement dans le code HTML. Pour être spécifique, j'ai utilisé ce code: pilote.find_element_by_xpath ("// div [@ @ Id = 'dynamic-xbrl-formulaire']") mais je n'ai que "incapable de localiser l'élément" les erreurs. Habituellement, cela me donne le bon résultat. Malheureusement, la plage que je cherche réellement n'a ni "id" ni "classe"!