21天Python学习——lxml库与Xpath提取网页数据
活动地址: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提取网页数据相关推荐
- 21天学习挑战赛——Python爬虫 lxml库与Xpath提取网页数据
目录 1. 爬虫提取网页数据流程图 2. lxml库 2.1 解析HTML网页 3. Xpath 3.1 选取节点 3.2 谓语 3.3 选取未知节点 3.4 选取若干元素 4. Xpath实战 4 ...
- Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法
目录 lxml库 lxml基本用法 解析XML文件 解析HTML文件 XPath 什么是XPath XPath语法 XPath实战 选取某节点的所有子孙节点 选取某节点的所有子节点 通过属性选取某节点 ...
- 【Python爬虫】用CSS 选择器提取网页数据
使用 pip 安装 requests_html 库 pip install requests_html 根据你的网络情况,通常需要几分钟时间. 在你的电脑任意位置,新建一个 crawler.py 文件 ...
- Python操作lxml库(Xpath篇)
活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.Xpath概述 1.Xpath简介 2. Xpa ...
- Python操作lxml库(基础篇)
活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 目录 学习日记 一.lxml库概述 1.lxml库介绍 2.l ...
- python添加lxml库_Python lxml库简介
lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取.市面上有很多现成的XML解析器,但是为了获得更好的结果,开发人员有时更愿意编写自己的XML和HTML解析器. ...
- Python学习-Scipy库信号处理signal(过滤、快速傅里叶变换、信号窗函数、卷积)
Python学习-Scipy库信号处理signal 目录 1.过滤:以某种方式修改输入信号 2.快速傅里叶变换 3.信号窗函数 4.卷积 导入库 import matplotlib.pyplot as ...
- python的lxml库简介_Python lxml库简介
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取.市面上有很多现 ...
- 爬虫入门实战系列(四):Amazon电子书销售排行榜爬取【Lxml库、Xpath语法熟悉】
对lxml库与beautifulsoup库的相关说明: 关于lxml库与beautifulsoup库,看俩者官方文档的开头介绍,都是"一个可以从HTML或XML文件中提取数据的Python库 ...
最新文章
- 赛迪研究院可以入编吗_对医护来说,拥有编制很重要吗?
- 深入理解javascript原型和闭包(11)——执行上下文栈
- 关于增强(五)-Class Enhancement
- python可视化库matplotlib_Python数据可视化matplotlib库
- ORACLE基本配置
- matlab程序约束条件,求Xij中i,j约束条件下的程序
- cmd命令行怎样运行python_在CMD命令行中运行python脚本的方法
- linux创建根目录代码,Linux文件系统之目录的建立
- 2017-2018-1 20155201 20155313 实验一 开发环境的熟悉
- 平均值 几何平均数 算术平均数 调和平均数 平方平均数
- 计算机word正文样式怎么新建,Word 2013中样式的创建与修改 创建新样式——想象力电脑应用...
- 【03】手把手教你构建垃圾分类系统-基于tensorflow2.3
- 关于python中的三个点【...】
- 融资1350万美元,待开启的元宇宙·数字人
- Facebook创始人扎克伯格呼吁加强互联网监管
- 建模小白一定要知道的8款软件
- 滴滴自动驾驶举办开放日,2025年量产无人车接入滴滴网络
- 电脑版微信提示音mp3_微信技巧,如何快速导出微信语音记录到电脑?无需ROOT版...
- Flutter学习笔记-使用decoration对Container装饰边框(圆角边框)
- Canvas图片下落