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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
解决pycharm安装第三方库失败的问题
May 09 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
Python实现Word文档转换Markdown的示例
Dec 22 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
PHP静态成员变量
2017/02/14 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
nodejs文件夹深层复制功能
2019/09/03 NodeJs
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
python递归实现快速排序
2018/08/18 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Python基于requests库爬取网站信息
2020/03/02 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
东方红海科技面试题软件测试方面
2012/02/08 面试题
自我鉴定思想方面
2013/10/07 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
《金子》教学反思
2014/04/13 职场文书
活动总结怎么写啊
2014/05/07 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
建党伟业的观后感
2015/06/01 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技