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

一、爬虫提取网页数据的流程图

图源:100天精通Python(爬虫篇)——第45天:lxml库与Xpath提取网页数据_无 羡ღ的博客-CSDN博客_python爬取网页内容

二、lxml库

lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据,是一款高性能的Python HTML、XML解析器,也可以利用Xpath语法,来定位特定的元素及节点信息。

1、下载

cmd 中 输入 pip install lxml

2、解析HTML网页

主要用到lxml库中的etree类

案例1:

from lxml import etreetext = '''
<html><body><div class="key"><div class="name">小浪</div><div class="age">23</div><div class="address">山东</div></div>
</body></html>
'''
#开始初始化
html = etree.HTML(text) #这需要传入一个html形式的字符串
print(html) #输出:<Element html at 0x1f77f541600>
print(type(html)) #输出:<class 'lxml.etree._Element'>
#将字符串序列化为html字符串
result = etree.tostring(html).decode('utf-8')
print(result)
# 输出:
#     <html><body>
#         <div class="key">
#             <div class="name">小浪</div>
#             <div class="age">23</div>
#             <div class="address">山东</div>
#         </div>
#     </body></html>
print(type(result)) #输出:<class 'str'>

三、XPath

Xpath(XML Path Language)是一们在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历。

常用路径表达式

用法举例:

谓语

选取未知节点

案例:

选取若干路径

四、Xpath实战

Chrome浏览器自带 Xpath Hepler可以很方便的获取标签路径。

1、新建一个test.html文件,且包括以下内容:

<!-- test.html --><div><ul><li class="item-0"><a href="link1.html">first item</a></li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-inactive"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div>

2、获取操作

获取所有的"li标签"

from lxml import etreehtml = etree.parse('test.html')
#输出etree.parse()返回的数据类型
print(type(html)) #输出:<class 'lxml.etree._ElementTree'>
result = html.xpath('//li')
#打印<li>标签的元素集合
print(result) #输出:[<Element li at 0x29ca2316c40>, <Element li at 0x29c93295a80>, <Element li at 0x29c932958c0>, <Element li at 0x29c932957c0>, <Element li at 0x29c9314fd80>]
print(len(result)) #输出:5
print(type(result)) #输出:<class 'list'>
print(type(result[0])) #输出:<class 'lxml.etree._Element'>

获取“li标签”的所有class属性

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//li/@class')
print(result)#输出:['item-0', 'item-1', 'item-inactive', 'item-1', 'item-0']

获取“li标签”下的hre为link1.html的“a标签”

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//li/a[@href="link1.html"]')
print(result)#输出:[<Element a at 0x26b4825df00>]

获取“li标签”下的所有“span标签”

from lxml import etreehtml = etree.parse('test.html')
# result = html.xpath('//li/span')
# 注意:这么写是不对的
# 因为/用来获取子元素,而<span>不是<li>的子元素,所以用双斜杠
result = html.xpath('//li//span')
print(result)#输出:[<Element span at 0x1f71a379280>]

获取“li标签”下的“a标签”里的所有class属性

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//li/a//@class')
print(result)#输出:['bold']

获取最后一个“li标签”的“a标签”中的href属性

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//li[last()]/a/@href')
print(result)#输出:['link5.html']

获取倒数第二个元素的内容

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//li[last()-1]/a')
print(result[0].text)#输出:fourth item

获取class值为bold的标签名

from lxml import etreehtml = etree.parse('test.html')
result = html.xpath('//*[@class="bold"]')
#tag方法可以获取标签名
print(result[0].tag)#输出:span

21天Python学习——lxml库与Xpath提取网页数据相关推荐

  1. 21天学习挑战赛——Python爬虫 lxml库与Xpath提取网页数据

    目录 ​1. 爬虫提取网页数据流程图 2. lxml库 2.1 解析HTML网页 3. Xpath 3.1 选取节点 3.2 谓语 3.3 选取未知节点 3.4 选取若干元素 4. Xpath实战 4 ...

  2. Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法

    目录 lxml库 lxml基本用法 解析XML文件 解析HTML文件 XPath 什么是XPath XPath语法 XPath实战 选取某节点的所有子孙节点 选取某节点的所有子节点 通过属性选取某节点 ...

  3. 【Python爬虫】用CSS 选择器提取网页数据

    使用 pip 安装 requests_html 库 pip install requests_html 根据你的网络情况,通常需要几分钟时间. 在你的电脑任意位置,新建一个 crawler.py 文件 ...

  4. Python操作lxml库(Xpath篇)

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.Xpath概述 1.Xpath简介 2. Xpa ...

  5. Python操作lxml库(基础篇)

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 目录 学习日记 一.lxml库概述 1.lxml库介绍 2.l ...

  6. python添加lxml库_Python lxml库简介

    lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取.市面上有很多现成的XML解析器,但是为了获得更好的结果,开发人员有时更愿意编写自己的XML和HTML解析器. ...

  7. Python学习-Scipy库信号处理signal(过滤、快速傅里叶变换、信号窗函数、卷积)

    Python学习-Scipy库信号处理signal 目录 1.过滤:以某种方式修改输入信号 2.快速傅里叶变换 3.信号窗函数 4.卷积 导入库 import matplotlib.pyplot as ...

  8. python的lxml库简介_Python lxml库简介

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取.市面上有很多现 ...

  9. 爬虫入门实战系列(四):Amazon电子书销售排行榜爬取【Lxml库、Xpath语法熟悉】

    对lxml库与beautifulsoup库的相关说明: 关于lxml库与beautifulsoup库,看俩者官方文档的开头介绍,都是"一个可以从HTML或XML文件中提取数据的Python库 ...

最新文章

  1. 赛迪研究院可以入编吗_对医护来说,拥有编制很重要吗?
  2. 深入理解javascript原型和闭包(11)——执行上下文栈
  3. 关于增强(五)-Class Enhancement
  4. python可视化库matplotlib_Python数据可视化matplotlib库
  5. ORACLE基本配置
  6. matlab程序约束条件,求Xij中i,j约束条件下的程序
  7. cmd命令行怎样运行python_在CMD命令行中运行python脚本的方法
  8. linux创建根目录代码,Linux文件系统之目录的建立
  9. 2017-2018-1 20155201 20155313 实验一 开发环境的熟悉
  10. 平均值 几何平均数 算术平均数 调和平均数 平方平均数
  11. 计算机word正文样式怎么新建,Word 2013中样式的创建与修改 创建新样式——想象力电脑应用...
  12. 【03】手把手教你构建垃圾分类系统-基于tensorflow2.3
  13. 关于python中的三个点【...】
  14. 融资1350万美元,待开启的元宇宙·数字人
  15. Facebook创始人扎克伯格呼吁加强互联网监管
  16. 建模小白一定要知道的8款软件
  17. 滴滴自动驾驶举办开放日,2025年量产无人车接入滴滴网络
  18. 电脑版微信提示音mp3_微信技巧,如何快速导出微信语音记录到电脑?无需ROOT版...
  19. Flutter学习笔记-使用decoration对Container装饰边框(圆角边框)
  20. Canvas图片下落

热门文章

  1. C#多人抢票模拟器,假设高铁有seatCount个座位
  2. python3 爬虫回忆录
  3. 轻松搞定网吧记费管理系统
  4. 在线SVG图形编码工具
  5. 二十六、python中字符串的编码与解码,utf-8编码与解码,gbk编码与解码
  6. 离散数学 - 第一章 命题和命题公式
  7. SOAP XML报文解析
  8. TPS54331 芯片手册 简介
  9. php置顶功能代码,jquery实现页面置顶功能代码
  10. 视频语音聊天室办理会员是骗人的吗?