Extrahieren von Daten aus HTML-Dateien mit Python und BeautifulSoup

Brauche ich zum extrahieren von Daten aus HTML-Dateien. Die betroffenen Dateien sind, die meisten wahrscheinlich automatisch generiert. Hochgeladen habe ich den code einer dieser Dateien auf Pastebin: http://pastebin.com/9Nj2Edfv. Das ist der link zu der eigentlichen Seite: 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

Benötigten Daten zu extrahieren ist zu finden unter den verschiedenen Rubriken.

Dies ist, was ich habe, so weit:

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

Habe ich alle Daten lokal gespeichert, das ist der Grund, es öffnet sich die Datei ecj_1.html.

Die Celex-Nummer und die Authentische Sprache funktioniert einigermaßen gut.

celex gibt

"Celex number: 
61977J0059"

auth_lang zurück "Authentic language: <li>French</li>"

Brauche ich nur den Inhalt des h1-tag (nicht die Pause am Ende).

[Auch, ich muss auth_lang Rückkehr nur "Französisch", und nicht die <li>-tags.]
Ist das kein problem mehr. Ich merkte, ich könnte nur hinzufügen ".text" Ende "auth_lang".

Prozedur auf der anderen Seite gibt diese:

    Type of procedure: <li>
    <strong>Type of procedure:</strong>
    <br />
    Reference for a preliminary ruling
    </li>

das ist ganz falsch, wie ich gerade brauche, bis Sie wieder "Vorabentscheidung".

Gibt es eine Möglichkeit, kann ich dies realisieren?

Zweites edit:
Ich ersetzte celex = soup.find('h1') mit celex = soup('h1', limit=2)[0] und Hinzugefügt .text zu drucken celex.

InformationsquelleAutor A2D2 | 2012-03-20

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.