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简单计算文件夹大小的方法
Jul 14 Python
python运行时间的几种方法
Jun 17 Python
Python面向对象特殊成员
Apr 24 Python
pycharm安装和首次使用教程
Aug 27 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
pandas 透视表中文字段排序方法
Nov 16 Python
Python3.8中使用f-strings调试
May 22 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
python 模拟银行转账功能过程详解
Aug 06 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python datetime时间格式的相互转换问题
Jun 11 Python
使用python如何删除同一文件夹下相似的图片
May 07 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验证码实现代码(3种)
2015/09/07 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
利用python修改json文件的value方法
2018/12/31 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
详解python算法之冒泡排序
2019/03/05 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
python try...finally...的实现方法
2020/11/25 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
甜美蛋糕店创业计划书
2014/01/30 职场文书
校园活动宣传方案
2014/03/28 职场文书
个人贷款收入证明
2014/10/26 职场文书
邹越演讲观后感
2015/06/15 职场文书
趣味运动会赞词
2015/07/22 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript