L'extraction de données à partir de fichiers HTML avec BeautifulSoup et Python
J'ai besoin d'extraire des données à partir de fichiers HTML. Les fichiers en question sont, le plus probable, généré automatiquement. J'ai téléchargé le code de l'une de ces fichiers sur Pastebin: http://pastebin.com/9Nj2Edfv. C'est le lien vers la page: http://eur-lex.europa.eu/Notice.do?checktexts=checkbox&val=60504%3Acs&pos=1&page=1&lang=en&pgs=10&nbl=1&list=60504%3Acs%2C&hwords=&action=GO&visu=%23texte
Les données dont j'ai besoin pour extraire est trouvé sous les différentes rubriques.
C'est ce que j'ai à ce jour:
from BeautifulSoup import BeautifulSoup
ecj_data = open("data\ecj_1.html",'r').read()
soup = BeautifulSoup(ecj_data)
celex = soup.find('h1')
auth_lang = soup('ul', limit=14)[13].li
procedure = soup('ul', limit=20)[17].li
print "Celex number:", celex.renderContents(),
print "Authentic language:", auth_lang
print "Type of procedure:", procedure
J'ai toutes les données stockées localement, ce qui est la raison pour laquelle il ouvre le fichier ecj_1.html.
Le numéro Celex et de l'Authentique langage fonctionne plutôt bien.
celex retourne
"Celex number:
61977J0059"
auth_lang retourne "Authentic language: <li>French</li>"
J'ai besoin de tout le contenu de la balise h1 (pas de pause à la fin).
[Aussi, j'ai besoin auth_lang pour revenir simplement "à la française", et non pas le <li>
-tags.]
Ce n'est plus un problème. J'ai réalisé que je pourrais juste ajouter ".texte" à la fin de "auth_lang".
Procédure sur l'autre main est de retour cette:
Type of procedure: <li>
<strong>Type of procedure:</strong>
<br />
Reference for a preliminary ruling
</li>
qui est tout à fait faux que j'ai juste besoin de retour "demande de décision préjudicielle".
Est-il un moyen que je peux accomplir cela?
Deuxième édition:
J'ai remplacé celex = soup.find('h1')
avec celex = soup('h1', limit=2)[0]
et a ajouté .text
à l'impression celex.
OriginalL'auteur A2D2 | 2012-03-20
Vous devez vous connecter pour publier un commentaire.
Le contenu de chacune des séquences sont des listes, les deux premières sont de longueur 1. Cependant
procedure
est de 5 éléments de long, et l'entrée, vous êtes après (dans ce cas) est la 4e. J'ai utilisé splitlines() pour se débarrasser des retours à la ligne aussi.de sortie:
OriginalL'auteur fraxel