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装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python实现豆瓣图片下载的方法
May 25 Python
基于tensorflow加载部分层的方法
Jul 26 Python
Django中URL的参数传递的实现
Aug 04 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
python 日志 logging模块详细解析
Mar 31 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
keras输出预测值和真实值方式
Jun 27 Python
用python对excel进行操作(读,写,修改)
Dec 25 Python
Python 打印自己设计的字体的实例讲解
Jan 04 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
apache rewrite_module模块使用教程
2008/01/10 PHP
关于页面优化和伪静态
2009/10/11 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
javascript求日期差的方法
2016/03/02 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python画折线图的程序
2018/07/26 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
电气自动化求职信
2014/06/24 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
大学迎新生标语
2014/10/06 职场文书
买房协议书范本
2014/10/23 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
开学典礼校长致辞
2015/07/29 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
学习计划是什么
2019/04/30 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
详解Vue的options
2021/05/15 Vue.js
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
python文件与路径操作神器 pathlib
2022/04/01 Python