BeautifulSoup - Standard Modul?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Hallo, Ich habe mich mal informiert:

Anscheinend hat die standard Python Library bereits ein Modul das BeautifulSoup sehr ähnelt aber nicht ganz so komfortabel ist bzw. fehleranfälliger ist.

Ich frage hier sicherlich die Falschen da ihr wahrscheinlich auch nichts daran ändern könnt - aber was hieltet ihr davon wenn sie in der Standard "Auslieferung" mit dabei wäre?

Ich fände es klasse, genauso klasse fände ich es wenn man mechanize mit reinpacken würde.

Habt ihr Vorschläge für 3rd Party-Module die eurer Meinung noch mit reinkommen sollten?

MfG,
CracKPod

---
http://crackpod.bplaced.net/
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Kennst Du PEP: 3001 - Procedure for reviewing and improving standard library modules? Da wurde sich systematisch Gedanken darüber gemacht, wie für Python 3000 die Standard Library aufgeräumt werden soll.
https://www.xing.com/go/invite/18513630.6a91d4
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Crazed hat geschrieben:Anscheinend hat die standard Python Library bereits ein Modul das BeautifulSoup sehr ähnelt aber nicht ganz so komfortabel ist bzw. fehleranfälliger ist.
Das BeautifulSoup nutzt.
Ich frage hier sicherlich die Falschen da ihr wahrscheinlich auch nichts daran ändern könnt - aber was hieltet ihr davon wenn sie in der Standard "Auslieferung" mit dabei wäre?
Nichts. BeautifulSoup ist aussschließlich zum Scrapen da, kann wenn man nicht aufpasst ein Speicherloch sein. Da gibts wesentlich bessere Module und ich will nichts davon in der Stdlib sehen.
Habt ihr Vorschläge für 3rd Party-Module die eurer Meinung noch mit reinkommen sollten?
Keine.

Ich bin dafür, dass die Stdlib eher Module verliert und nur noch Module in die Stdlib kommen, die sich nicht verändern müssen. Alles was in die Stdlib kommt verändert sich naturgemäß nicht mehr. Dafür sollte man easy_install in einen allgemeineren Packagemanager verwandeln und virtualenv mitliefern. Dann kann man sich ohne weitere Probleme Pakete nachinstallieren.
TUFKAB – the user formerly known as blackbird
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Interessant. Wie heißt denn diese Modul? Kann man es dann genauso wie BeautifulSoup benutzen (ist es also das gleiche?) oder benutzt er nur Teile da raus.

Dein Vorschlag mit easy_install finde ich genial. So das Python dann z.b automatisch easy_install startet wenn eine ModuleNotFound - Exception (<- Keine Ahnung wie das heißt ^^) auftritt und sich vorher das entsprechende Module downloadet und installiert.

Virtualenv kenne ich leider nicht.

Was mich aber einfach ein bisschen an Python stört (das ich aber Geschmackssache) das andere sich für viele deiner Scripte erstmal 3rd party module runterladen müssen damit es läuft. Wäre toll wenn sie irgendwie out-of-the-box laufen würden.

MfG,
CracKPod
lunar

Crazed hat geschrieben:Ich frage hier sicherlich die Falschen da ihr wahrscheinlich auch nichts daran ändern könnt - aber was hieltet ihr davon wenn sie in der Standard "Auslieferung" mit dabei wäre?
Gar nichts. BeautifulSoup hat sich überlebt, zum einen, weil man richtig kaputtes HTML immer seltener sieht, zum anderen, weil es mittlerweile mit html5lib und lxml andere HTML-Parser gibt, die schneller und speicherschonender sind, eine angenehmere API bereitstellen und trotzdem auch kaputtes HTML in den meisten Fällen anstandslos parsen.

Besonders lxml.html hat BS in punkto Geschwindigkeit und Speicherschonung weit hinter sich gelassen, bietet mit CSS Selektoren und XPATH mächtige Werkzeuge zum Scrapen und taugt noch dazu nicht nur fürs Scrapen, sondern für jegliche Arbeit mit xml.
Ich fände es klasse, genauso klasse fände ich es wenn man mechanize mit reinpacken würde.
Und was soll noch alles rein? SQLAlchemy für DB-Work, Jinja fürs Templating, ein WSGI-Toolkit brauchen wir auch noch, nicht zu reden von einem vernünftigen GUI-Toolkit und Multimediafähigkeiten. Was vergessen? Ach ja, SOAP und Webservices-Tools, Grafikbearbeitung ... hinzufügen könnte man auch noch Krypto-Module, Protokoll-Support, mehr Markupsprachen, etc.

Diese Liste ließe sich endlos erweitern, und für jeden dieser Punkt lässt sich eine Begründung finden, die der für mechanize im Mindesten gleichwertig ist.

Scraping ist nun mal nicht der einzige Einsatzzweck von Python, und höchstwahrscheinlich nicht mal der häufigste. Um die Bedürfnisse aller Nutzer zu erfüllen, müsste man die Standardbibliothek endlos aufblasen, bis Python 200 MB groß ist. Und selbst dann ließe sich immer jemand finden, der noch ein Modul möchte ... die Batteries Included Philosophie ist nun mal illusorisch und von vorne herein zum Scheitern verurteilt.

Mitsuhiko hat besser erkannt, was wirklich benötigt wird: Einheitliches Paketmanagement mit Abhängigkeitsverwaltung. Perl hat vorgemacht, wie das geht, es wird Zeit, dass Python nachzieht. Die Voraussetzung dafür wäre die Integration der setuptools in die Standardbibliothek. Aber darüber redet komischerweise niemand ...
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

lunar hat geschrieben:BeautifulSoup hat sich überlebt, zum einen, weil man richtig kaputtes HTML immer seltener sieht, zum anderen, weil es mittlerweile mit html5lib und lxml andere HTML-Parser gibt, die schneller und speicherschonender sind, eine angenehmere API bereitstellen und trotzdem auch kaputtes HTML in den meisten Fällen anstandslos parsen.
Das zum einen, zweitens weil html5lib *genauso* parst wie Firefox. Und was der Firefox anzeigt kannst du mit html5lib in einen lxml Baum parsen.
TUFKAB – the user formerly known as blackbird
Antworten