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实现把xml或xsl转换为html格式
Apr 08 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
用python打印菱形的实操方法和代码
Jun 25 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
5款实用的python 工具推荐
Oct 13 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
Zend引擎的发展 [15]
2006/10/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php表单敏感字符过滤类
2014/12/08 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
深入理解js promise chain
2016/05/05 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
python两种注释用法的示例
2020/10/09 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
高三英语教学反思
2014/01/13 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书