解析网页技术
模块名 | 技术 | 特点 |
---|---|---|
re模块 | 正则表达式 | * 基于文本的特征来匹配或查找指定数据 *可以处理任何格式的字符串文档,类似于模糊匹配的效果 |
lxml模块beautifulsoup4 | XPath和Beautiful Soup | 基于HTML/XML文档的层次结构来确定达到指定节点的路径 更适合处理层级比较明显的数据 |
json模块 | JSONPath | 用于JSON文档的数据解析 |
解析工具的性能比较
抓取工具 | 速度 | 使用难度 | 安装难度 |
---|---|---|---|
re | 最快 | 困难 | 无(内置) |
lxml | 快 | 简单 | 一般 |
beautifulsoup4 | 慢 | 最简单 | 简单 |
re模块实例有时间再补上:
代补
beautifulsoup4的实例:
import requests
from bs4 import BeautifulSoup
base_url = 'https://www.baidu.com'
res = requests.get(base_url) # 发送 GET 请求
res.encoding = 'utf-8'
# 创建 BeautifulSoup类对象
soup = BeautifulSoup(res.text, 'lxml')
# 查找所有 <a> 标签
a_all = soup.find_all('a')
print(' 查找所有 <a> 标签:\n{}'.format(a_all))
# 查找 href="http://v.baidu.com" 的<a> 标签
a_attrs = soup.find_all('a', attrs={
'href':'http://v.baidu.com'} )
print(' 查找指定属性的<a> 标签:\n{}'.