• python(自4) xpath下载 lxml安装 lxml语法 使用方式


    (一)安装  搜索xpath

     讲解  XPath 教程 (w3school.com.cn) 

    一,下载地址 : https://chrome.zzzmh.cn/info/hgimnogjllphhhkhlmebbmlgjoejdpjl

    二 ,拖拽


    (二)lxml安装

    cmd 打开终端

    1. cd python
    2. dir
    3. cd Scripts
    4. pip install lxml -i https://pypi.douban.com/simple
     一 ,查看是否安装完成打开谷歌随便搜索一个网页按shift +ctrl+X 出现黑框


    (三) 测试lxml安装成功

    打开pyCharm 输入 from lxml import etree  如果报错 就点击安装(我这个就是没安装成功)

      lxml基本语法

    lxml语法使用  需要单独创建一个html文件 然后获取里边的数据

    1. 路径的写法:
    2. 1. 绝对路径: 用"/"开头的路径 - /标签在树结构中的路径 (路径必须从根节点开始写)
    3. 2. 相对路径: 路径开头用"."标签当前节点(xpath前面是谁,'.'就代表谁), ".."表示当前节点的上层节点
    4. 3. 全路径: 用"//"开头的路径 - 在整个树中获取标签
    5. 注意:绝对路径和全路径的写法以及查找方式和是用谁去点的xpath无关
    6. """
    7. result = root.xpath('/supermarket/staffs/staff/name/text()')
    8. print(result)
    9. result = root.xpath('./staffs/staff/name/text()')
    10. print(result)
    11. staff1 = root.xpath('./staffs/staff')[0] # 获取第一个员工对应的staff标签
    12. result = staff1.xpath('./name/text()')
    13. print(result) # ['小明']
    14. result = staff1.xpath('../staff/name/text()')
    15. print(result) # ['小明', '小花', '张三', '李四', '王五']
    16. result = root.xpath('//name/text()')
    17. print(result)
    18. result = staff1.xpath('//goods/name/text()')
    19. print(result)
    20. # 3)获取标签内容
    21. # 节点对象.xpath(获取标签的路径/text()) - 获取指定路径下所有标签的标签内容
    22. result = root.xpath('//position/text()')
    23. print(result)
    24. # 4)获取标签属性值
    25. # 节点对象.xpath(获取标签的路径/@属性名)
    26. result = root.xpath('/supermarket/@name')
    27. print(result) # ['永辉超市']
    28. result = root.xpath('//staff/@id')
    29. print(result)
    30. # 5)谓语(条件)
    31. # a. 位置相关谓语
    32. """
    33. [N] - 第N个
    34. [last()] - 最后一个
    35. [last()-N]; [last()-1] - 倒数第2个 、 [last()-2] - 倒数第3
    36. [position()>N]、[position()<N]、[position()>=N]、[position()<=N]
    37. """
    38. result = root.xpath('//staff[1]/name/text()')
    39. print(result) # ['小明']
    40. result = root.xpath('//staff[last()]/name/text()')
    41. print(result) # ['王五']
    42. result = root.xpath('//staff[last()-1]/name/text()')
    43. print(result) # ['李四']
    44. result = root.xpath('//staff[position()<3]/name/text()')
    45. print(result) # ['小明', '小花']
    46. # b.属性相关谓语
    47. """
    48. [@属性名=属性值] - 指定属性是指定值的标签
    49. [@属性名] - 拥有指定属性的标签
    50. """
    51. # staff[@class="c1"] == staff.c1
    52. result = root.xpath('//staff[@class="c1"]/name/text()')
    53. print(result)
    54. result = root.xpath('//staff[@id="s003"]/name/text()')
    55. print(result)
    56. result = root.xpath('//goods[@discount]/name/text()')
    57. print(result)
    58. # c.子标签内容相关谓语 - 根据子标签的内容来筛选标签
    59. """
    60. [子标签名>数据]
    61. [子标签名<数据]
    62. [子标签名>=数据]
    63. [子标签名<=数据]
    64. [子标签名=数据]
    65. """
    66. result = root.xpath('//goods[price=2]/name/text()')
    67. print(result)
    68. # 6)通配符 - 写路径的时候用*来表示所有标签或者所有属性
    69. result = root.xpath('//staff[1]/*/text()')
    70. print(result)
    71. # *[@class="c1"] == .c1
    72. result = root.xpath('//*[@class="c1"]/name/text()')
    73. print(result)
    74. result = root.xpath('//goods[@*]/name/text()')
    75. print(result)
    76. result = root.xpath('/supermarket/@*')
    77. print(result)
    78. # 7)若干路径 - |
    79. # 路径1|路径2 - 同时获取路径1和路径2的内容
    80. result = root.xpath('//goods/name/text()|//staff/position/text()')
    81. print(result)

    lxml网页使用  写lxml语法  右边会出现对应的文字数据


     

     参考

    【RPA开发】lxml 库之 etree 使用详解_尹煜的博客-CSDN博客

     lxml基本语法_顶峰相见_li的博客-CSDN博客

  • 相关阅读:
    深度学习概览
    Day6 --- SQLAlchemy进阶
    模拟器抓HTTP/S的包时如何绕过单向证书校验(XP框架)
    Clion新增子模块库代码跳转
    SpringMVC学习---第二课
    Django框架
    斩获 offer 的 Java 面试宝典
    ApplicationContext 和 BeanFactory 的区别
    图像分割算法
    java基于SpringBoot+Vue+nodejs 的社区团购系统 elementui
  • 原文地址:https://blog.csdn.net/weixin_68266812/article/details/133250962