Python利用Xpath选择器爬取京东网商品信息


Posted in Python onJune 01, 2020

HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树;XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

Python利用Xpath选择器爬取京东网商品信息

首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:

https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用bs4选择器进行下一步的数据采集。

商品信息在京东官网上的部分网页源码如下图所示:

Python利用Xpath选择器爬取京东网商品信息

狗粮信息在京东官网上的网页源码

仔细观察源码,可以发现我们所需的目标信息是存在<li data-sku="*****" class="gl-item">标签下的,那么接下来我们就像剥洋葱一样,一层一层的去获取我们想要的信息。

通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

Python利用Xpath选择器爬取京东网商品信息

在线复制Xpath表达式

很多小伙伴都觉得Xpath表达式很难写,其实掌握了基本的用法也就不难了。在线复制Xpath表达式如上图所示,可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用,而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。

直接上代码,利用Xpath去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:

Python利用Xpath选择器爬取京东网商品信息

爬虫代码

在这里,小编告诉大家一个Xpath表达式匹配技巧。之前看过好几篇文章,大佬们都推荐Xpath表达式使用嵌套匹配的方式。在本例中,首先定义items,如下所示:

items = selector.xpath('//li[@class="gl-item"]')

之后通过range函数,逐个从网页中进行匹配目标信息,而不是直接通过复制Xpath表达式的方式一步到位。希望小伙伴们以后都可以少入这个坑~~

最后得到的效果图如下所示:

Python利用Xpath选择器爬取京东网商品信息

最终效果图

新鲜的狗粮再一次出炉咯~~~

小伙伴们,有没有发现利用Xpath来获取目标信息比正则表达式要简单一些呢?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python查询sqlite数据表的方法
May 08 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
django 将model转换为字典的方法示例
Oct 16 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python列表元素常见操作简单示例
Oct 25 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
Python二次规划和线性规划使用实例
Dec 09 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
Django多个app urls配置代码实例
Nov 26 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 #Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 #Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 #Python
k-means 聚类算法与Python实现代码
Jun 01 #Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 #Python
python如何写出表白程序
Jun 01 #Python
python中os包的用法
Jun 01 #Python
You might like
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
JS实现电商放大镜效果
2017/08/24 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
python字符串与url编码的转换实例
2018/05/10 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
Python如何重新加载模块
2020/07/29 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
优秀求职信范文分享
2014/01/26 职场文书
村委会贫困证明范文
2014/09/21 职场文书
聚会通知怎么写
2015/04/23 职场文书
环保宣传语大全
2015/07/13 职场文书
2015年教师国培感言
2015/08/01 职场文书