1. 数据的分类
结构化的数据:json;xml
json模块,jsonpath模块,xpath
非结构化的数据:html
re模块,xpath
2. json模块
json_str-->python数据类型
json.loads(json_str)
python数据类型-->json_str
json.dumps(py_dict, indent=2, ensure_ascii=False)
json_str-->写入到文件中
json.load()
with open('文件名.txt', 'w') as f:
json.dump(f)
把文件中的json_str-->python数据类型变量
json.dump()
with open('文件名.txt', 'r') as f:
py_dict = json.load(json_str, f)
3. 了解jsonpath
from jsonpath import jsonpath
ret = jsonpath(py_dict. '$..xxx')
# 按照规则从python数据类型中提取数据,返回列表,如果匹配不到,则返回None
# 规则'$..xxx'表示根节点下所有名为xxx的key的值
# '$..book.title.@name' 获取全部div下的a标签的href属性的值
# '$..book.title.text()' 获取全部div下的a标签的文本内容的值
4. 复习re
re.match(r'规则’,'待匹配的字符串')
# 从第一个字符开始匹配,如果匹配不到则返回None
re.search(r'规则’,'待匹配的字符串')
# 全文匹配,返回第一个匹配到的结果
re.findall(r'规则’,'待匹配的字符串')
# 全文匹配,返回所有匹配到的结果组成的list
re.sub(r'规则’,'修改替换的字符串','待匹配的字符串')
# 返回替换之后的新字符串
p = re.compile(r'规则’)
p.findall('待匹配的字符串')
# 提前编译匹配规则,提高匹配速度
5. 了解xpath规则
//*[@id="xxx"]/a[1]/@href
#所有id为xxx的标签下的第一个a的href属性的值
//a[text()="下一页"]/@href
# 文本内容为下一页的a标签的href属性的值
//div/h3[last()]/text()
# 所有div下倒数第一个的h3中的文本内容
//div/h3[last()-1]/text()
# 所有div下倒数第二个的h3中的文本内容
//div/h3[position()>2]/text()
# 所有div下从第三个开始的所有h3中的文本内容
网友评论