最好用最高效的方法
实例化etree对象,将数据源码加载到对象中
etree.parse(filepath)可以加入本地html文件
也可以调用网页的响应数据
l例子:
tree=etree.parse(filepath)
tree.xpath(‘/html/标签路径’ )
符号:
/单斜杠表示一个层级
//表示多个层级
例子:(’/html//目标标签’)
如果放在最左边(’//目标标签‘)也可以
如果有多个同名标签并且有属性
就(’//目标标签[ @class=’标签属性’]
如果多个同名标签没有属性值就选择索引定位
例子:(’//div//目标标签[数字]’) 但是索引是从1开始的不是0
**
获取标签文本内容:
在目标标签后面加/text() 返回的是直系的列表获得具体内容还需要加在括号外面加[0]
//text()获取标签下所有的文本内容(包括它的子标签的文本内容)
获取标签属性:
在目标标签后面加/@属性名 返回的是列表
例如@src
./ (点左斜杠)表示本身标签下,可以以用于已经定位了一个标签的列表,再。xpath(‘ ./目标标签’)
乱码的解决办法:
直接在响应文件后面加.encoding=’utf-8’
或者text=text.encode(‘iso-8859-1’).decode(‘gbk’)
图片的响应要以二级制保存,例如requests.get().content
