人生苦短,我用 Python
前文传送门:
小白学 Python 爬虫(1):开篇
小白学 Python 爬虫(2):前置准备(一)基本类库的安装
小白学 Python 爬虫(3):前置准备(二)Linux基础入门
小白学 Python 爬虫(4):前置准备(三)Docker基础入门
小白学 Python 爬虫(5):前置准备(四)数据库基础
小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装
小白学 Python 爬虫(7):HTTP 基础
小白学 Python 爬虫(8):网页基础
小白学 Python 爬虫(9):爬虫基础
小白学 Python 爬虫(10):Session 和 cookies
小白学 Python 爬虫(11):urllib 基础使用(一)
小白学 Python 爬虫(12):urllib 基础使用(二)
小白学 Python 爬虫(13):urllib 基础使用(三)
小白学 Python 爬虫(14):urllib 基础使用(四)
小白学 Python 爬虫(15):urllib 基础使用(五)
小白学 Python 爬虫(16):urllib 实战之爬取妹子图
小白学 Python 爬虫(17):Requests 基础使用
小白学 Python 爬虫(18):Requests 进阶操作
前面两篇我们介绍了 Requests 的使用,原本是想再来一个实战的,正准备搞事情的时候想起来上次实战还给自己挖了一个坑, Xpath 还没介绍,还是乖乖的先介绍解析库吧。
XPath ,全称 XML Path Language ,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。
首先,还是敬上 Xpath 的官方网站:https://www.w3.org/TR/xpath/all/ 。
其次,再敬上两个还不错的学习地址:
w3school:https://www.w3school.com.cn/xpath/index.asp
菜鸟教程:https://www.runoob.com/xpath/xpath-tutorial.html
下面列出了最有用的路径表达式:
注意,在使用 Xpath 之前,需要先确保安装好 lxml 库,如果没有安装,可以参考前面的前置准备进行安装。
首先需要引入 lxml 库的 etree 模块,接着引入 Requests 模块,小编这里直接以自己的博客站用作示例。
结果如下:
可以看到结果是成功爬取,这里我们首先使用 requests 获取首页的源代码 byte 数据流,接着使用 decode() 进行解码,解码后将字符串传入 etree.HTML() 构建了一个 lxml.etree._Element 对象,接着我们对这个对象做了 tostring() 转换字符串并且进行打印。
注意: 这里使用 tostring() 进行转化字符串的时候,一定需要添加参数 encoding ,否则中文将会显示为 Unicode 编码。
我们构建完成了 Element 对象,接着我们就可以开始愉快的 Xpath 学习了。
我们会用 开头的 XPath 规则来选取所有符合要求的节点。示例(依然采用上面的 html ):
结果如下:
结果太长仅截取部分。
这里使用 * 代表匹配所有节点,也就是整个 HTML 文本中的所有节点都会被获取。可以看到,返回形式是一个列表,每个元素是 Element 类型,其后跟了节点的名称,如 html 、 head 、 meta 等,所有节点都包含在列表中了。
当然,在这里匹配也可以指定节点的名称,例如获取所有的 meta 节点:
结果如下:
这里要选取所有 meta 节点,可以使用 ,然后直接加上节点名称即可,调用时直接使用 方法即可。由于返回的是一个列表,所有要获取特定的某个 meta 的时候,可以直接在 [] 中加索引,例如 。
获取子节点一般可以使用 或者 来获取子节点或者孙子节点。
比如现在想获取所有的文章内容的块,如下:
红框所标识的内容,可以看到 DOM 结构为 下面的 ,那么这个语句可以这么写:
结果如下:
此处的 是用于获取子节点,如果想要获取孙子节点,如 下面的
和 来查找子节点,那么肯定有语法可以查找父节点,不然只能向下查询不能向上查询就有点就有点太傻了。
来实现的,比如我们先找到一篇文章的图片,现在要向上查找它的 ,如下图:
属性为 的 ,然后获取它的父节点 ,并且打印他的 属性,代码如下:
。
符号进行属性过滤。
- 星际争霸2补丁汉化版 v3.5.0星际争霸手机版下载「星际争霸2补丁汉化版 v3.5.0」
- 敢在iPhone头上动土!近期热门音乐手机精选推荐诺基亚音乐手机「敢在iPhone头上动土!近期热门音乐手机精选推荐」
- 华为p30pro外放声音小手机音量突然变小了是怎么回事「华为p30pro外放声音小」
- OPPO Find X6怎么连接电脑oppo手机连接电脑「OPPO Find X6怎么连接电脑」
- oppo手机系统更新好不好 如何更新oppo手机系统升级「oppo手机系统更新好不好 如何更新」
- realmeV15和realmex7pro区别是什么-参数对比-哪款更值得入手手机参数对比平台「realmeV15和realmex7pro区别是什么-参数对比-哪款更值得入手」
- QQ如何设置是否在线qq手机在线是什么状态「QQ如何设置是否在线」
- 小米Max测评:虽配备6.44寸屏幕却难有创新小米手机测评「小米Max测评:虽配备6.44寸屏幕却难有创新」
- 华为手机怎么投屏到平板上手机投屏到平板「华为手机怎么投屏到平板上」
- 65岁老头成婚恋顶流!死了老婆急找下家,《我的后半生》让人不适
- 如何彻底关闭手机语音信箱:简单步骤与实用小贴士苹果手机语音信箱怎么关闭「如何彻底关闭手机语音信箱:简单步骤与实用小贴士」
- 简单三步 轻松搞定红米开发者模式与ROOT权限红米手机开发者选项在哪里「简单三步 轻松搞定红米开发者模式与ROOT权限」
- 《乌云之上》:李小冉面前,敢“带衣服”进组的,我只服孙俪!
- 手机耗电太快是什么原因为什么手机耗电快「手机耗电太快是什么原因」
- 神舟X50怎么样 神舟FHD屏手机详细测评神舟手机「神舟X50怎么样 神舟FHD屏手机详细测评」
- 上海信托初冬:信托资金投向股票市场的规模仍有广阔的提升空间,挑战与机遇并存
- 太可怕!一餐馆老板突然接到大单!20箱佛跳墙!结果崩溃……佛手机「太可怕!一餐馆老板突然接到大单!20箱佛跳墙!结果崩溃……」
- 三星三折叠手机即将登场,采用创新G型双内折设计三折叠手机「三星三折叠手机即将登场,采用创新G型双内折设计」
- 旧手机别随便卖!女子刚卖完支付宝里的钱就没了!一千块钱的手机推荐「旧手机别随便卖!女子刚卖完支付宝里的钱就没了!」
- 不想频繁充电?这4款“超长续航”手机值得买,最低仅1189元
- 1001美股前瞻 | 三大股指期货涨跌不一,特朗普或几周内征收铜关税
- 1002享界S9增程版预售31.8万起,豪华轿车市场新贵登场
- 1003建行信用快贷申请条件 建行信用快贷适用对象及办理流程手机信用贷款「建行信用快贷申请条件 建行信用快贷适用对象及办理流程」
- 994小游戏猛洗短剧用户,一个月素材6000组
- 995手机快捷清理手机清理app「手机快捷清理」
- 996正在阅读:诺基亚首款带WAPI无线!S60触屏5530评测诺基亚首款带WAPI无线!S60触屏5530评测诺基亚触屏手机「正在阅读:诺基亚首款带WAPI无线!S60触屏5530评测诺基亚首款带WAPI
- 997鸿蒙谷歌 华为谷歌 荣耀谷歌 华为鸿蒙HarmonyOS 2.0 安装谷歌服务框架(精简教程)荣耀手机系统「鸿蒙谷歌 华为谷歌 荣耀谷歌 华为鸿蒙HarmonyOS 2.0 安装谷歌服务框架(精简教程
- 998上班族空闲时间如何用手机赚钱:10个适合的副业推荐随着生活节奏的加快,越来越多的上班族开始寻找在空闲时间能够做的副业,以增加收入来源。如今,利用手机进行线上兼职已经成为一种趋势。下面为大家推荐10个适
- 989手机丢了后担心支付宝或微信里的钱,第一时间该这么做!手机丢了微信里的钱怎么办「手机丢了后担心支付宝或微信里的钱,第一时间该这么做!」