最好用最高效的方法
    实例化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