简介
json解析工具
安装
jsonpath的安装及使用方式:
pip安装:
pip install jsonpath
jsonpath的使用:
obj = json.load(open('json文件', 'r',encoding='utf‐8'))
ret = jsonpath.jsonpath(obj, 'jsonpath语法')
简介
- BeautifulSoup
简称: bs4 - 什么是BeatifulSoup?
BeautifulSoup,和lxml一样,是一个html的解析器,主要功能也是解析和提取数据 - 优缺点?
缺点:效率没有lxml的效率高 优点:接口设计人性化,使用方便
安装
-
安装
pip install bs4 -
导入
from bs4 import BeautifulSoup -
创建对象 服务器响应的文件生成对象
soup = BeautifulSoup(response.read().decode(), ‘lxml’) -
本地文件生成对象
soup = BeautifulSoup(open(‘1.html’), ‘lxml’) 注意:默认打开文件的编码格式gbk所以需要指定打开编码格式
示例
from bs4 import BeautifulSoup
# 本地文件生成对象
soup = BeautifulSoup(open('a.html'), 'lxml')
# 查询第一个
print(soup.find('a'))
# 查询所有a标签和span标签
print(soup.find_all(['a','span']))
# class寻找
print(soup.select('.weui-desktop-layout__side'))
# 层级选择器dev下面的span
print(soup.select('dev,span'))
# 获取内容,String只能获取到下面没其余标签的情况
print(soup.select('dev,span')[0].string)
print(soup.select('dev,span')[0].get_text())
# 获取节点属性
print(soup.select('dev,span')[0]['v-if'])
print(soup.select('dev,span')[0].attrs.get('v-if'))
语法解析
- 根据标签名查找节点
soup.a 【注】只能找到第一个a
soup.a.name
soup.a.attrs
- 函数
(1).find(返回一个对象)
find('a'):只找到第一个a标签
find('a', title='名字')
find('a', class_='名字')
(2).find_all(返回一个列表)
find_all('a') 查找到所有的a
find_all(['a', 'span']) 返回所有的a和span
find_all('a', limit=2) 只找前两个a
(3).select(根据选择器得到节点对象)【推荐】
1.element
eg:p
2..class
eg:.firstname
3.#id
eg:#firstname
4.属性选择器
[attribute]
eg:li = soup.select('li[class]')
[attribute=value]
eg:li = soup.select('li[class="hengheng1"]')
5.层级选择器
element element
div p
element>element
div>p
element,element
div,p
eg:soup = soup.select('a,span')
- 获取标签值
(1).获取节点内容:适用于标签中嵌套标签的结构 obj.string
obj.get_text()【推荐】
(2).节点的属性
tag.name 获取标签名
eg:tag = find('li) print(tag.name)
tag.attrs将属性值作为一个字典返回
(3).获取节点属性
obj.attrs.get('title')【常用】 obj.get('title')
obj['title']