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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
python实现学生信息管理系统
Apr 05 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
详解python播放音频的三种方法
Sep 23 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Django操作session 的方法
Mar 09 Python
python使用列表的最佳方案
Aug 12 Python
Python 实现一个简单的web服务器
Jan 03 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
python logging模块的使用总结
2019/07/09 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
对祖国的寄语大全
2014/04/11 职场文书
员工趣味活动方案
2014/08/27 职场文书
基层党员对照检查材料
2014/09/24 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
Python Flask实现进度条
2022/05/11 Python