爬虫第三天
学习目标
- 能够说明 json相关的方法(load loads dump dumps)
- 能够说明 jsonpath的使用场景
- 能够说明 jsonpath的使用(提取 json中的数据)
- 能够说明 正则表达式的常见语法
- 能够说明 re模块的常见用法
- 能够说明 原始字符串r的用法
- 了解 爬虫的数据的分类
json相关的方法(load loads dump dumps)
一图搞得json库的常用方法
方法 | 说明 |
---|---|
json.loads(obj) | 将字符串序列化成Python的基本数据类型,注意单引号与双引号 |
json.dumps(obj) | 将Python的基本数据类型序列化成字符串 |
json.load(obj) | 读取文件中的字符串,序列化成Python的基本数据类型 |
json.dump(obj) | 将Python的基本数据类型序列化成字符串并写入到文件中 |
# 导入json库
In [1]: import json
# python类型的字典
In [2]: dic = {'k1':123, 'k2':456}
# 字典转字符串
In [3]: str1 = json.dumps(dic)
In [4]: str1
Out[4]: '{"k1": 123, "k2": 456}'
# 字符串转字典
In [5]: dic1 = json.loads(str1)
In [6]: dic1
Out[6]: {'k1': 123, 'k2': 456}
# 将字典转化成字符串并写入文件
In [7]: json.dump(dic ,open('db.json', 'w')) # 可加参数:ensure_ascii=False
# 从文件中读取字符串并转成字典
In [10]: str2 = json.load(open('db.json', 'r'))
In [11]: str2
Out[11]: {'k1': 123, 'k2': 456}
# 也可以使用request自带的json()方法
import requests
response = requests.get(url) # response数据必须是json数据,不然会报错
dict_json = response.json()
pprint格式化输出JSON字符串
pip install pprint # 安装pprint库
from pprint import pprint
pprint(json_dict)
jsonpath的使用场景
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具
有时我们需要通过抓包进行数据的获取, jsonpath就是数据提取的工具
jsonpath的使用(提取 json中的数据)
pip install jsonpath # 安装jsonpath
import jsonpath
res = jsonpath.jsonpath(dic_name, '$..key_name') # 只接收字典和列表(dict/list)
参考:jsonpath 使用教程(快速处理dict的深度查询)
正则表达式的常见语法
re模块的常见用法
方法 | 描述 |
---|---|
re.match() | 从字符串的起始位置匹配,匹配成功,返回匹配的对象 |
re.search() | 扫描整个字符串并返回第一个成功的匹配 |
re.findall() | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表 |
re.sub() | 把字符串中所有匹配正则表达式的地方替换成新的字符串 |
re.split() | 将字符串按照正则表达式匹配结果进行分割,返回列表类型 |
re.complie() | 生成正则表达式(特殊) |
常用修饰符
修饰符 | 描述 |
---|---|
re.I | 使匹配对大小不敏感 |
re.S | 匹配包括换行符在内的所有字符(默认不包括换行符) |
参考:python常用方法详解
python中原始字符串’r’的用法
原始字符串定义(raw string):所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符,原始字符串往往针对特殊字符而言。例如"\n"的原始字符串就是"\n"