使用Python 3和示例解析HTML的最佳库?

TMC*_*TMC 22 python-3.x

我是Python的新手,在Windows上使用Python 3.1(pywin).我需要解析一些HTML,基本上是特定HTML标签之间的额外值,并且在我的选项数组中感到困惑,我找到的所有内容都适用于Python 2.x. 我读过关于Beautiful Soup,HTML5Lib和lxml的好评,但我无法弄清楚如何在Windows上安装任何这些.

问题:

  1. 你推荐什么HTML解析器?
  2. 我该如何安装?(要温柔,我是Python新手,记得我在Windows上)
  3. 您是否有一个简单的示例,说明如何使用推荐的库从特定URL中获取HTML并返回值,如下所示:

    <div class ="foo"> <table> <tr> <td> foo </ td> </ tr> </ table> <a class="link" href='/blahblah'>链接</a> </DIV>

(说我们想要回归"/ blahblah")

Hum*_*art 8

Python 3中的Web抓取目前支持得很差; 所有体面的库只能用于Python 2.如果你必须在Python中使用Web,请使用Python 2.

虽然推荐使用Beautiful Soup(Stack Overflow中关于使用Python进行Web抓取的每一个问题都表明了这一点),但它对于Python 3来说并不像Python 2那么好; 我甚至无法安装它,因为安装代码仍然是Python 2.

至于适用于Python 3的适当且易于安装的解决方案,您可以尝试使用库的HTML解析器,尽管它非常简单,但它带有Python 3.


mik*_*obi 6

如果你的HTML格式正确,你有很多选择,比如saxdom.如果格式不正确,则需要容错解析器,例如Beautiful soup,元素整理lxml的HTML解析器.没有解析器是完美的,当呈现各种破碎的HTML时,有时我必须尝试多于一个. LxmlElementree使用一个大多数兼容的api,它更像是一个标准的Beautiful soup.

在我看来,lxml是使用xml文档的最佳模块,但ElementTreepython中包含的仍然相当不错.在过去,我曾经习惯Beautiful soup将HTML转换为xml并构造ElementTree用于处理数据.


mjv*_*mjv 5

BeautifulSoup及其3.1.0.1版(2009年1月)也适用于Python 3.x.

我没有在Py3k下使用BeautifulSoup的直接经验(虽然这很快就会改变......).然而,我刚才读到,版本3.1.0的Beautiful Soup在实际HTML上的表现比以前的版本差得多,所以我可能会尝试等待(如果可能的话)(即延长Python 2.6的时间).


Már*_*cio 5

我目前使用的是lxml,在Windows上,我使用的是http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml中的安装二进制文件。

import lxml.html
page = lxml.html.fromstring(...)
title = page.xpath('//head/title/text()')[0]
Run Code Online (Sandbox Code Playgroud)


cru*_*nk1 5

我知道这已经晚了,但是为了将来参考,Beautiful Soup 4.3.2从2013年10月开始供货.

http://www.crummy.com/software/BeautifulSoup/bs4/download/

它与Python 3兼容.