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实现自动更换ip的方法
May 05 Python
Python 操作MySQL详解及实例
Apr 30 Python
Python进程间通信之共享内存详解
Oct 30 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
python移位运算的实现
Jul 15 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
python实现门限回归方式
Feb 29 Python
Python reversed函数及使用方法解析
Mar 17 Python
python神经网络编程之手写数字识别
May 08 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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 数组实例说明
2008/08/18 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php实现微信模板消息推送
2018/03/30 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
新浪的图片新闻效果
2007/01/13 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Java及python正则表达式详解
2017/12/27 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
酒吧创业计划书
2014/01/18 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
安全环保演讲稿
2014/08/28 职场文书
长征观后感
2015/06/09 职场文书
感恩教师节主题班会
2015/08/12 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android