Python中常用的html数据抽取方法有正则、XPath和BeautifulSoup这三种。其中,最常用的XPath库是lxml。今天再介绍一个库SimplifiedDoc,一起比较一下他们的优劣。
1、安装
名称 | 安装方法 | 包大小 | 说明 |
---|---|---|---|
正则 | 不需安装(内置) | ||
lxml | pip install lxml | 4.5MB | 依赖c语言库 |
BeautifulSoup | pip install beautifulsoup4 | 107kB | 如果不使用第三方库,则不需要别的安装 |
SimplifiedDoc | pip install simplified-scrapy | 43kB | 没有第三方依赖 |
2、Python版本支持
这几种方法都同时支持Python2和Python3。
3、使用方法
对正则和XPath的使用方法,这里就不重复了,只简单对比下BeautifulSoup和SimplifiedDoc。下面的代码展示了两者实例化及提取数据的方法。
html = '''
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<div id='test'>
test text
</div>
</body>
</html>
'''
# 例子:http://www.jsphp.net/python/show-24-214-1.html
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,features='html.parser')
soup = BeautifulSoup(html,features='lxml')
title = soup.title
# 取所有
divs = soup.findAll(id='test')
divs = soup.select('div#test')
# 取第一个
div = soup.find(id='test'