Meilleure bibliothèque pour analyser HTML avec Python 3 et exemple?
je suis complètement nouveau en Python et j'utilise Python 3.1 sur Windows (pywin). J'ai besoin de parser un peu de HTML, de valeurs essentiellement supplémentaires entre des balises HTML spécifiques et je suis confus à mon tableau d'options, et tout ce que je trouve est adapté pour Python 2.x. J'ai lu raves au sujet de la belle soupe, HTML5Lib et lxml, mais je ne peux pas comprendre comment installer l'un de ces sur Windows.
Questions:
- quel analyseur HTML recommandez-vous?
- comment l'installer? (Être doux, je suis complètement nouveau pour Python et n'oubliez pas, je suis sur Windows)
avez-vous un exemple simple sur la façon d'utiliser la bibliothèque recommandée pour prendre HTML à partir d'une URL spécifique et retourner la valeur de dire quelque chose comme ceci:
Lienfoo
(disons que nous voulons un retour "/blahblah")
5 réponses
le raclage Web en Python 3 est actuellement très mal supporté; toutes les bibliothèques décentes ne fonctionnent qu'avec Python 2. Si vous web gratter en Python, l'utilisation de Python 2.
bien que Belle Soupe est souvent recommandé (chaque question concernant le raclage web avec Python dans la pile Overflow le suggère), ce n'est pas aussi bon pour Python 3 que pour Python 2; Je n'ai même pas pu l'installer car le code d'installation était encore Python 2.
Comme pour des solutions adéquates et simples à installer pour Python 3, vous pouvez essayer l'analyseur HTML de la bibliothèque, bien que tout à fait barebones, il est livré avec Python 3.
si votre HTML est bien formé, vous avez beaucoup d'options, comme sax
et dom
. Si elle n'est pas bien formée, Vous avez besoin d'un analyseur de défauts tolérant tel que Beautiful soup
, élément rangé, ou lxml'analyseur HTML. Aucun analyseur n'est parfait, lorsqu'il est présenté avec une variété de HTML cassé, parfois je dois essayer plus d'un. Lxml
et Elementree
utilisez une api compatible qui est plus standard que Beautiful soup
.
À mon avis, lxml
est la meilleure module pour travailler avec des documents xml, mais le ElementTree
fourni avec python est encore assez bonne. Dans le passé, j'ai utilisé Beautiful soup
pour convertir HTML en xml et construire ElementTree
pour le traitement des données.
BeautifulSoup, avec sa version 3.1.0.1 (janvier 2009) fonctionne aussi avec Python 3.x.
Je n'ai pas d'expérience directe avec BeautifulSoup sous Py3k (bien que cela devrait bientôt changer...). Je viens de lire, cependant, que la version 3.1.0 de Beautiful Soup fait beaucoup plus de mal sur le HTML du monde réel que ses versions précédentes, donc je peux essayer et attendre si possible (i.e. rester avec Python 2.6 un peu plus longtemps).
je sais que c'est bien tard, mais pour référence future, belle soupe 4.3.2 est disponible à partir D'octobre. 2013.
http://www.crummy.com/software/BeautifulSoup/bs4/download/
il est compatible avec Python 3.
j'utilise actuellement lxml, et sur Windows j'ai utilisé le binaire d'installation de http://www.lfd.uci.edu / ~gohlke/pythonlibs / #lxml.
import lxml.html
page = lxml.html.fromstring(...)
title = page.xpath('//head/title/text()')[0]