• Python操作lxml库(基础篇)


    在这里插入图片描述​ 

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

    学习日记

    目录

    学习日记

    一、lxml库概述

    1、lxml库介绍

    2、lxml库特点

    3、lxml库的安装

    二、基本使用

    1、lxml.etree

    2、解析HTML网页

    3、读取并解析HTML文件

    三、lxml使用流程

    1、 导入模块

    2、创建解析对象

    四、lxml库数据提取

    1、提取所有a标签内的文本信息

    2、获取所有href的属性值

    3、不匹配href=" www.biancheng.net/priduct"


    一、lxml库概述

    1、lxml库介绍

            lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。

    2、lxml库特点

            HTML是超文本标记语言,主要用于显示数据,他的焦点是数据的外观
    XML是可扩展标记语言,主要用于传输和存储数据,他的焦点是数据的内容

    3、lxml库的安装

    windows系统下,在cmd命令提示框中,输入如下命令

    pip install lxml
    

    在cmd命令行验证是否安装成功。若引入模块,不返回错误则说明安装成功。 

    二、基本使用

    1、lxml.etree

    在爬虫代码采集过程中,通过etree.HTML直接将字符串实例转化为element对象。

    1. import requests
    2. from lxml import etree
    3. res = requests.get("http://www.jsons.cn/zt/")
    4. html = res.text
    5. root_element = etree.HTML(html)
    6. print(root_element)
    7. print(root_element.tag)

    2、解析HTML网页

    1. #解析HTML字符串
    2. from lxml import etree
    3. text = '''
    4. 无羡
    5. 20
    6. 四川
  • '''
  • # 开始初始化
  • html = etree.HTML(text) # 这里需要传入一个html形式的字符串
  • print(html)
  • print(type)
  • # 将字符串序列化为html字符串
  • result = etree.tostring(html).decode('utf-8')
  • print(result)
  • print(type(result))
  • 3、读取并解析HTML文件

    1. from lxml import etree
    2. # 将html文件进行读取
    3. html = etree.parse('1.html')
    4. # 将html内容序列化
    5. result = etree.tostring(html).decode('utf-8')
    6. print(result)
    7. print(type(result))
    8. html = etree.HTML(result) # 这里需要传入一个html形式的字符串
    9. print(html)
    10. print(type)

    三、lxml使用流程

    1、 导入模块

    from lxml import etree

    2、创建解析对象

    调用 etree 模块的 HTML() 方法来创建 HTML 解析对象。

    parse_html = etree.HTML(html)

    HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,该方法可以自动修正 HTML 文本。

    1. from lxml import etree
    2. html_str = '''
    3. <div>
    4. <ul>
    5. <li class="item1"><a href="link1.html">Pythona>li>
    6. <li class="item2"><a href="link2.html">Javaa>li>
    7. <li class="site1"><a href="c.biancheng.net">C语言中文网a>
    8. <li class="site2"><a href="www.baidu.com">百度a>li>
    9. <li class="site3"><a href="www.jd.com">京东a>li>
    10. ul>
    11. div>
    12. '''
    13. html = etree.HTML(html_str)
    14. result = etree.tostring(html)
    15. print(result.decode('utf-8'))

    四、lxml库数据提取

    1、提取所有a标签内的文本信息

    1. from lxml import etree
    2. # 创建解析对象
    3. parse_html=etree.HTML(html)
    4. # 书写xpath表达式,提取文本最终使用text()
    5. xpath_bds='//a/text()'
    6. # 提取文本数据,以列表形式输出
    7. r_list=parse_html.xpath(xpath_bds)
    8. # 打印数据列表
    9. print(r_list)

    2、获取所有href的属性值

    1. from lxml import etree
    2. # 创建解析对象
    3. parse_html=etree.HTML(html)
    4. # 书写xpath表达式,提取文本最终使用text()
    5. xpath_bds='//a/@href'
    6. # 提取文本数据,以列表形式输出
    7. r_list=parse_html.xpath(xpath_bds)
    8. # 打印数据列表
    9. print(r_list)

    3、不匹配href=" www.biancheng.net/priduct"

    1. from lxml import etree
    2. # 创建解析对象
    3. parse_html=etree.HTML(html)
    4. # 书写xpath表达式,提取文本最终使用text()
    5. xpath_bds='//a/@href'
    6. # 提取文本数据,以列表形式输出
    7. xpath_bds='//ul[@id="sitename"]/li/a/@href'
    8. # 打印数据列表
    9. print(r_list)

  • 相关阅读:
    第八节——Vue渲染列表+key作用
    Delay-Based 拥塞控制算法
    解锁前端Vue3宝藏级资料 第四章 VUE常用 UI 库 2 ( ailwind 后台框架)
    vue3入门之简介
    spring LaTeX模板参考文献显示不了,怎么解决呀
    网站域名被QQ拦截提示:当前网页非官方页面拦截的解决办法
    史上最全的neo4j图数据库教程:基于neo4j搭建金融风控图谱详细教程
    【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换
    docker-compose内网本地安装
    2023年【汽车驾驶员(中级)】报名考试及汽车驾驶员(中级)证考试
  • 原文地址:https://blog.csdn.net/m0_63794226/article/details/126360128