xpath使用

  • 安装:pip3 install lxml

  • 绝对路径(每一个都是从根开始查找)

    • 查找了所有a标签的属性等于href属性值,利用的是/—绝对路径,

    • 列子:
      we_data = ‘’’

      ​​’’’

    • 导入:from lxml import etree

    • 转换对象:html = etree.HTML(data) 打印出是python的一个对象

    • etree.tostring(html)补全html缺胳膊少腿的标签:result = etree.tostring(html)

    • 获取某个标签的内容(基本使用),注意,获取a标签的所有内容,a后面就不用再加正斜杠,否则报错。

      • 第一种写法:

        • 根据result补全的标签找到需要的部分,注意不可以直接.text必须使用循环否则报错

          xpath使用

        • html_data = html.xpath(’/html/body/div/ul/li/a’) 获取出来的是每个需要内容的对象,需要循环 读取文本.text

          xpath使用

      • 第二种写法:

        • (直接在需要查找内容的标签后面加一个/text()就行)

        • html_a = html.xpath(’/html/body/div/ul/li/a/text()’) 返回的是获取需要内容的列表 循环列表得出需要的内容

          xpath使用

    • 打印指定路径下a标签的属性(可以通过遍历拿到某个属性的值,查找标签的内容)

      • html_attri = html.xpath(’/html/body/div/ul/li/a/@href’) 标签下/@属性

        xpath使用

    • 查找最后一个li标签里的a标签下的内容:

      • 倒着加入:[last()]

        xpath使用

    • 查找倒数第二个li标签里的a标签下的内容:

      xpath使用

    • 使用parse打开html的文件:

      • html = etree.parse(‘路径’) 读取出指定位置的html
        html_data = etree.tostring(html,pretty_print=True)res = html_data.decode(‘utf-8’)print(res)
  • 相对路径

    • 相对路径,查找一下l相对路径下li标签下的a标签下的href属性的值,注意,a标签后面需要双//。

      • 查找一下l相对路径下li标签下的a标签下的内容

        xpath使用

      • 查找一下l相对路径下li标签下的a标签下的href属性的值

        xpath使用

  • 相对路径下跟绝对路径下查特定属性的方法类似,也可以说相同。

    • 根据属性查找:指定属性下需要的的文本内容 在需要的标签下的属性加入

      xpath使用

  • 如果在提取某个页面的某个标签的xpath路径的话:

    [外链图片转存中…(img-RLIkvzKk-1565610323409)]

  • 如果在提取某个页面的某个标签的xpath路径的话:

  • //*[@id=“kw”] 使用相对路径查找所有的标签,属性id等于kw的标签。