人生苦短,我用 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 结构为 下面的 ,那么这个语句可以这么写:
结果如下:
此处的 是用于获取子节点,如果想要获取孙子节点,如 下面的
和 来查找子节点,那么肯定有语法可以查找父节点,不然只能向下查询不能向上查询就有点就有点太傻了。
来实现的,比如我们先找到一篇文章的图片,现在要向上查找它的 ,如下图:
属性为 的 ,然后获取它的父节点 ,并且打印他的 属性,代码如下:
。
符号进行属性过滤。
- 【教程】全民K歌,用手机唱卡拉OK,朋友一起听!手机k歌「【教程】全民K歌,用手机唱卡拉OK,朋友一起听!」
- 繁荣“入境游”,“游”出“日常感”是关键
- 苹果iPhone14和13对比区别是什么 苹果美版值得买吗?手机壳多少钱「苹果iPhone14和13对比区别是什么 苹果美版值得买吗?」
- 两个人在线观看免费完整版日本手机在线播放「两个人在线观看免费完整版日本」
- 北京:“以花为媒”培育新消费
- 美股震荡三大股指再度转涨!特斯拉涨逾5%市值再破8000亿美元美股手机新浪网「美股震荡三大股指再度转涨!特斯拉涨逾5%市值再破8000亿美元」
- 光明肉业旗下佛手品牌亮相成都糖酒会,传统调味智慧激活餐饮新势能
- 以小博大,《我的世界大电影》全球豪赚
- 拍照买微单还是买手机?写在vivo蓝图影像技术沟通会后
- 带上3米长充电线、术前手机静音……住院必备小技巧,建议收藏手机小技巧「带上3米长充电线、术前手机静音……住院必备小技巧,建议收藏」
- 鲁医健康说|春夏时节腹泻人群增多,导致腹泻的主要病原体有哪些?其传播途径有何特点?
- 公牛充电宝10000毫安多少钱(公牛充电宝10000毫安充满电多长时间)10000毫安的充电宝能充手机几次「公牛充电宝10000毫安多少钱(公牛充电宝10000毫安充满电多长时间)」
- 霸王茶姬赴美IPO,“抄”速度能否摆脱扩张困境?
- 给骑手缴社保,实质性进展来了
- 养一台理想L7一年需要多少钱?家用养车到底难不难?
- 球员上上测|申京延续火箭中锋基因,进入MVP讨论范围的他到底有多强
- 给近三年最好的10部年代剧,你最看好哪部
- 各个品牌的手机换屏都需要多少钱?看完吓得我戴上了手机壳!vivo手机换屏多少钱「各个品牌的手机换屏都需要多少钱?看完吓得我戴上了手机壳!」
- 用音乐守护“星星的孩子”,在绘本中走进百岁指挥家曹鹏的故事
- 官方正版北斗导航地图手机北斗导航地图「官方正版北斗导航地图」
- 1001windows10相机驱动在哪 windows10相机驱动位置介绍windows10手机版「windows10相机驱动在哪 windows10相机驱动位置介绍」
- 1002晓鸣股份:股票交易异常波动
- 983内蒙古伊金霍洛旗:“工会帮减肥”引领职工健康生活
- 974手机多图尺寸修改?教你多图批量修改手机尺寸「手机多图尺寸修改?教你多图批量修改」
- 955已设置的指纹解锁怎样解除_手机里这3个设置是时候用起来了,能够保护你的个人隐私...手机里的秘密「已设置的指纹解锁怎样解除_手机里这3个设置是时候用起来了,能够保护你的个人隐私...」
- 956扎堆儿上新大戏,北京舞台春光正好
- 947开荒建造类游戏手机版大全 2024可玩性高的生存手游推荐生存游戏手机版「开荒建造类游戏手机版大全 2024可玩性高的生存手游推荐」
- 928光明肉业旗下佛手品牌亮相成都糖酒会,传统调味智慧激活餐饮新势能
- 929苹果iPhone14和13对比区别是什么 苹果美版值得买吗?手机壳多少钱「苹果iPhone14和13对比区别是什么 苹果美版值得买吗?」