Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】


  • Python爬虫基础——HTML、CSS、JavaScript、JQuery网页前端技术
  • Python爬虫基础——正则表达式
  • Python爬虫基础——re模块的提取、匹配和替换
  • Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】
  • Python爬虫进阶——JsonPath使用案例
  • Python爬虫进阶——urllib模块使用案例【淘宝】
  • Python爬虫进阶——Request对象之Get请求与URL编码【英雄联盟吧】
  • Python爬虫进阶——Request对象之post请求案例分析【百度翻译】
  • Python爬虫实战—— Request对象之header伪装策略
  • Python爬虫实战——反爬策略之代理IP【无忧代理】
  • Python爬虫实战——反爬策略之模拟登录【CSDN】
  • Python爬虫实战——反爬机制的解决策略【阿里】
  • Python爬虫总结——常见的报错、问题及解决方案

XPath与正则都是用于数据的提取,二者的区别是:

  • 正则:功能相对强大,写起来相对复杂;
  • XPath:语法简单,可以满足绝大部分的需求,但不能爬取注释代码(反爬的一种手段);

所以,如果你可以根据自己的需要进行选择。

一、首先,我们需要为Google浏览器配置XPath插件:

请自行学习,效果如下:
在这里插入图片描述

二、XPath的语法:

Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】_第1张图片
注意:
XPath的索引从1开始。

三、XPath的案例:

  • 一级分类:
    //h3[@class="classify_c_h3"]/a/text()
    Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】_第2张图片

  • 二级分类:
    //div[@class="classify_list"]/span/a/text()
    Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】_第3张图片

  • 模糊查询:
    //div[contains(@class,"classify_list")]/span/a/text()
    Python爬虫基础——XPath语法的学习与lxml模块的使用【CSDN】_第4张图片

四、lxml模块的使用

import lxml.etree as le

with open('edu.html', 'r', encoding='utf-8') as f:
    html = f.read()
    # print(html)
    # 转换为XPath对象
    html_x = le.HTML(html)
    # print(html_x)
    # 匹配一二级分类的父标签
    div_x_s = html_x.xpath('//div[@class="classify_cList"]')  # 直接从HTML中取则不用加.
    data_s = []
    for div_x in div_x_s:
        # 一级分类
        category1 = div_x.xpath('./h3/a/text()')[0]  # 记得加.
        # 二级分类
        category2_s = div_x.xpath('./div/span/a/text()')  # 表示从当前节点进行筛选
        data_s.append(
            dict(
                category1=category1,
                category2_s=category2_s
            )
        )
    print(data_s)
    for data in data_s:
        print(data.get('category1'))
        for category2 in data.get('category2_s'):
            print('   ', category2)


为我心爱的女孩~~


你可能感兴趣的:(Python学习,Python爬虫,#,解析库之lxml)