1. xpath语法
//div[@id='xx']/../*[last()]/a[2]/@href
# id是xx的div的父一级标签下的所有标签中最后一个标签下的第二个a标签的名为href属性的值
/html//a[text()="xxx"]/./text()
# html下文本内容是xxx的所有a标签下的当前标签(就还是那个a标签)的文本内容
2. lxml模块的使用
from lxml import etree
html_element = etree.HTML(html_str)
rets = html_element.xpath('xpath_str')
# rets返回list or []
# 如果xpath_str是定位标签元素,构成rets这个列表中的每个元素都是一个element对象,可以继续xpath!
# 如果xpath_str是提取@属性或文本(),就返回由字符串构成的列表!
3. lxml模块使用注意:
# lxml.etree.HTML()会修改html_str
# 爬虫提取数据要以lxml.etree.tostring()返回结果为准!
4. json模块
json.dumps # python数据类型-->json_str
json.loads # json_str-->python数据类型
json.dump # python数据类型-->写入类文件对象
json.load # 类文件对象 读出-->python数据类型
5. jsonpath模块
from jsonpath import jsonpath
rets = jsonpath(python数据类型, '$..xxx')
# python数据类型中不管位置,只要key是xxx就把值放到list中返回
# 批量快速提取某个指定key的值!
6. 关于原始字符串r
a = '\n' # a是换行符!
b = r'\n' # b只是\n,不是换行符!
7. 响应内容分类
结构化
json
json模块
jsonpath
re
xml
lxml(xpath)
re
非结构化 html
lxml(xpath)
re