Python如何使用正则表达式爬取京东商品信息


Posted in Python onJune 01, 2020

京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%。如此庞大的一个电商网站,上面的商品信息是海量的,小编今天就带小伙伴利用正则表达式,并且基于输入的关键词来实现主题爬虫。

首先进去京东网,输入自己想要查询的商品,小编在这里以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:
https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其实参数%E7%8B%97%E7%B2%AE解码之后就是“狗粮”的意思。那么非常明显,只要输入keyword这个参数之后,将其进行编码,就可以获取到我们的目标网址了,请求网页,得到响应,尔后利用选择器便可以进行下一步的精准采集了。

在京东网上,狗粮信息在京东官网上的网页源码如下图所示:

Python如何使用正则表达式爬取京东商品信息

狗粮信息在京东官网上的网页源码

话不多说,直接撸代码,如下图所示。小编用的是py3,也建议大家以后多用py3版本。通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是一种可以用于模式匹配和替换的强有力的工具。找到目标网页之后,调用urllib中的urlopen函数打开网页并获取源码,之后利用正则表达式实现对目标信息的精准采集。

Python如何使用正则表达式爬取京东商品信息

利用正则表达式实现对目标信息的精准采集

正则表达式写在这个程序中确实蛮复杂的,也占据了多行,但是主要用到的正则表达式是[\w\W]+?和[\s\S]+?。

[\s\S]或者[\w\W]是完全通配的意思,\s是指空白,包括空格、换行、tab缩进等所有的空白,而\S刚好相反。这样一正一反下来,就表示所有的字符,完全的,一字不漏的。另外,[]这个符号,表示在它里面包含的单个字符不限顺序的出现,比如下面的正则:[ace]*,这表示,只要出现a/c/e这三个任意的字母,都会被匹配。

此外,[\s]表示,只要出现空白就匹配;[\S]表示,非空白就匹配。那么它们的组合,表示所有的都匹配,与它相对应的,有[\w\W]等,意义完全相同。其实,[\s\S] 和 [\w\W]这样的用法,比"."所匹配的还要多,因为"."是不会匹配换行的,所有出现有换行匹配的时候,人们就习惯 使用[\s\S]或者[\w\W]这样的完全通配模式。

最后得到的输出效果图如下所示:

Python如何使用正则表达式爬取京东商品信息

输出效果图

这样小伙伴们就可以获取到狗粮的商品信息了,当然,小编在这里只是抛砖引玉,只匹配了四个信息,而且只是做了个单页的获取。需要更多数据的小伙伴们可以自行去更改正则表达式和设置多页,达到你想要的效果。下篇文章小编将利用美丽的汤BeautifulSoup来进行匹配目标数据,实现目标信息的精准获取。

最后给大家简单介绍一下正则表达式。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

正则表达式对于初学者确实晦涩难懂,不过慢慢学习还是可以掌握的,并不一定要完全记下来,但是你要知道什么时候需要什么参数,能做到顺利使用它就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
使用Python编写vim插件的简单示例
Apr 17 Python
Python实现命令行通讯录实例教程
Aug 18 Python
对pandas中to_dict的用法详解
Jun 05 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
python opencv读mp4视频的实例
Dec 07 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
详解python字符串驻留技术
May 21 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 #Python
python实现密码验证合格程序的思路详解
Jun 01 #Python
Python网络爬虫四大选择器用法原理总结
Jun 01 #Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 #Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 #Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
Jun 01 #Python
Python常见反爬虫机制解决方案
Jun 01 #Python
You might like
php 购物车的例子
2009/05/04 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JavaScript SHA512&SHA256加密算法详解
2015/08/11 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python 序列的方法总结
2016/10/18 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python3 集合set入门基础
2020/02/10 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
Python发送邮件实现基础解析
2020/08/14 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
如何实现一个自定义类的序列化
2012/05/22 面试题
经典团队口号
2014/06/06 职场文书
暑假学习心得体会
2014/09/02 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers