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:

  1. quel analyseur HTML recommandez-vous?
  2. comment l'installer? (Être doux, je suis complètement nouveau pour Python et n'oubliez pas, je suis sur Windows)
  3. 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:

    foo
    Lien

(disons que nous voulons un retour "/blahblah")

19
demandé sur TMC 2010-03-24 05:54:14

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.

7
répondu Humphrey Bogart 2010-06-29 22:13:17

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.

6
répondu mikerobi 2011-11-18 21:34:28

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).

5
répondu mjv 2010-03-24 03:08:15

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.

5
répondu Scott Crunkleton 2013-12-10 09:07:43

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]
4
répondu Márcio 2011-11-17 19:54:03