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进行稳定可靠的文件操作详解
Dec 31 Python
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
python简单实现计算过期时间的方法
Jun 09 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
详解django中使用定时任务的方法
Sep 27 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
tensorflow求导和梯度计算实例
Jan 23 Python
使用Python实现牛顿法求极值
Feb 10 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 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
一个改进的UBB类
2006/10/09 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python3访问sina首页中文的处理方法
2014/02/24 Python
python调用新浪微博API项目实践
2014/07/28 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python常用断言函数实例汇总
2020/11/30 Python
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
早餐连锁店计划书
2014/01/08 职场文书
关爱老人标语
2014/06/21 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS