用Python进行复杂的HTML解析

4 投票
3 回答
971 浏览
提问于 2025-04-16 00:44

我已经知道在Python中可以用BeautifulSoup、htmllib等工具来解析基于标签的HTML。

不过,我想要一个更强大的工具,能够处理一些复杂的任务,比如读取HTML表格、列表等,并把这些内容以简单易用的对象形式呈现在代码中。Python有没有这样的强大库呢?

3 个回答

0

标准的HTML解析器已经相当不错了,它们可以给你提供简单的对象,比如可迭代的列表。要从一个表格中创建比二维列表更复杂的东西,可能还得看页面里的数据是什么。

话说回来……

这里有一个博客链接,是一个人写的脚本,可以把HTML表格转换成Python列表。实际的文件可以在这里找到

我从来没听说过有什么标准的Python库可以做这些操作,所以你最好的办法就是在需要的时候上网搜索一下。很可能有人已经做过你想做的事情。

注意:在把网上找到的代码粘贴到自己应用程序之前,最好先阅读并理解这些代码!注明来源也是很重要的!

2

你可以考虑使用lxml,它有一个强大的HTML处理功能。另外,还有一个依赖于lxml的模块,叫做pyquery,这可能正是你需要的。

PyQuery的语法和jQuery很像,所以如果你对jQuery比较熟悉,就能很快上手。

下面是一个简单的例子,展示如何从aol.com获取第一个<ul>项目:

>>> from pyquery import PyQuery as pq
>>> import urllib
>>> data = urllib.urlopen('http://aol.com').read()
>>> d = pq(data)
>>> first_ul = d('ul:first')
>>> first_ul
[<ul#dhL2>]
>>> print first_ul
<ul id="dhL2"><li class="dhL1"><a accesskey="" href="https://new.aol.com/productsweb/?promocode=827693&amp;ncid=txtlnkuswebr00000074" name="om_dirbtn1" class="_o4-0" id="om_dirbtn1">Get Free Mail</a></li>
            </ul>
2

BeautifulSoup是一个很不错的库,它提供了一种简单的方法来解析HTML,并且有一些方便的方式可以轻松提取数据。

你想做的事情,其实可以通过一些简单的正则表达式来轻松实现。你可以写正则表达式来查找特定的数据模式,并提取你需要的数据。

撰写回答