En résumé, lxml
se positionne comme un ultra-rapide de la production-la qualité de l'html et xml parser, qui, par ailleurs, comprend également un soupparser
module de retomber sur BeautifulSoup sa fonctionnalité. BeautifulSoup
est un projet conçu pour vous faire économiser du temps à s'en extraire rapidement des données en html mal formé ou xml.
lxml la documentation dit que les deux analyseurs ont des avantages et des inconvénients. Pour cette raison, lxml
fournit un soupparser
de sorte que vous pouvez basculer d'avant en arrière. Citant,
BeautifulSoup utilise une autre approche d'analyse. Ce n'est pas un réel HTML
analyseur mais utilise des expressions régulières pour plonger dans la soupe de tags. Il est
donc plus indulgent dans certains cas et moins bon dans d'autres. Il est
pas rare que lxml/libxml2 analyse et résout rompu HTML mieux,
mais BeautifulSoup est supérieure de support pour le codage de détection. Il
beaucoup dépend de l'entrée de l'analyseur fonctionne mieux.
À la fin ils disent,
L'inconvénient de l'utilisation de cette analyse est qu'il est beaucoup plus lentque
l'analyseur HTML de lxml. Donc, si la performance est importante, vous pourriez vouloir
envisager l'utilisation de soupparser seulement comme une solution de repli pour certains cas.
Si je comprends correctement, cela signifie que la soupe de l'analyseur est plus robuste --- il peut traiter avec une "soupe" de la malformation de balises à l'aide d'expressions régulières --- alors qu' lxml
est plus simple et juste analyse les choses et construit un arbre que vous attendez. Je suppose qu'il s'applique également à l' BeautifulSoup
lui-même, et pas seulement à l' soupparser
pour lxml
.
Ils montrent également comment bénéficier de l' BeautifulSoup
s'encodage de détection, tout en continuant l'analyse rapidement avec lxml
:
>>> from BeautifulSoup import UnicodeDammit
>>> def decode_html(html_string):
... converted = UnicodeDammit(html_string, isHTML=True)
... if not converted.unicode:
... raise UnicodeDecodeError(
... "Failed to detect encoding, tried [%s]",
... ', '.join(converted.triedEncodings))
... # print converted.originalEncoding
... return converted.unicode
>>> root = lxml.html.fromstring(decode_html(tag_soup))
(Même source: http://lxml.de/elementsoup.html).
En termes de BeautifulSoup
s'créateur,
Ça y est! Amusez-vous! J'ai écrit Belle Soupe pour économiser du temps tout le monde.
Une fois que vous vous habituez à elle, vous devriez être en mesure de disputer des données de
mal conçu des sites web en quelques minutes. Envoyez-moi un email si vous
avez des commentaires, des problèmes ou souhaitez-moi savoir à propos de votre
projet qui utilise la Belle Soupe.
--Leonard
Cité de la Belle Soupe de documentation.
J'espère que c'est clair maintenant. La soupe est un brillant d'une personne de projet conçu pour vous faire économiser du temps à extraire des données de mal-conçu des sites web. L'objectif est de vous faire économiser le temps en ce moment, pour faire le travail, pas nécessairement de gagner du temps dans le long terme, et certainement pas pour optimiser les performances de votre logiciel.
Aussi, à partir de la lxml site web,
lxml a été téléchargé à partir du Python Package Index de plus de deux
des millions de fois et est également disponible directement dans de nombreux package
les distributions, par exemple pour Linux ou MacOS-X.
Et, à partir de Pourquoi lxml?,
Les bibliothèques C libxml2 et libxslt ont d'énormes avantages:...
Conforme aux normes... Complète... rapide. vite! VITE! ... lxml
est un nouveau binding Python pour libxml2 et libxslt...