福建电脑
Journal of Fujian Computer
Vol. 37 No.2
Feb. 2021
Python爬虫在导购系统中的应用
黄震高蕾冼沛杰谢杰峰陈智超
\\惠州学院计算机科学与工程学院广东惠州516007)2 (惠州学院电子信息与电气工程学院广东惠州516007)
11121
摘要近年来,随着互联网的发展,出现了网上购物这种全新的购物方式。网上购物己经成为年轻人购物的主要方式。但
Python爬虫的优惠券型导购系
统。将淘宝、天猫、京东三大电商网站作为数据源,使用Python的requests、selenium等模块结合IP代理反反爬虫技术将 商品信息与优惠券信息爬取下来,对信息进行数据清洗并存入mongo DB数据库中,由后台服务器程序整理数据,并在基于 HTML5的安卓端APP展示出来供用户查看与选择。该系统简单高效,可以改善用户的购物体验,具有较高的实用价值。 关键词IP代理;优惠券;导购系统;爬虫;HTML5 中图法分类号 TP319 DOI:10.16707/j.cnki.fjpc.2021.02.004
网上的商品琳琅满目,如何挑选物美价廉的商品成为需要解决的问题,由此设计了一个基于
Application of Python Crawler in Shopping Guide System
HUANG Zhen1, GAO Lei1, XIAN Peijie1, XIE Jiefeng2, CHEN Zhichao1
1 (School of Computer Science and Engineering, Huizhou University, Huizhou, China, 516007)2 (School of Electronic Information and Electrical Engineering, Huizhou University, Huizhou, China, 516007)
Abstract In recent years, with the development of the Internet, a brand-new way of shopping (i.e., online shopping) has emerged. Online shopping has become the main way for young people to shop. However, there are a dazzling array of online products, and how to choose high-quality and inexpensive products has become a problem that needs to be solved. Therefore, a coupon-type shopping guide system based on Python crawler is designed. Using Taobao, Tmall, and Jingdong as the data source, the system uses python's requests, selenium and other modules combined with IP proxy anti-anti-crawler technology to crawl down product information and coupon information. The obtained information is cleaned and saved in a mongo DB database. The stored data is sorted by a background server program and displayed in a HTML5-based Android APP for users to view and select. The system is simple and efficient. It can improve the user's shopping experience, and has high practical value.
Keywords IP Proxy; Coupons; Shopping Guide System; Crawler; HTML5
1引言
近年来,随着互联网的飞速发展,以及网络化、 电商智能化、物联网等技术的兴起和国内物流效率 的不断提高,越来越多的人改变传统的购物方式,
将方便快捷的网上购物作为主要的购物方式[1-2]。新 的购物方式会产生各种各样的新问题,买家不仅需 要从琳琅满目的商品中挑选自己需要的商品,还要 兼顾优惠、价格、挑选时间的问题[3]。为了解决这 些问题,本文设计了一款基于Python爬虫的优惠券 型导购系统。本系统可以帮助用户更好地挑选所需
E-mail: 195146501@qq.com。高蕾,女,1976年生,主要研究领域为数据库设计、软件开发。Email: 377214787@qq.com。冼沛杰,男,1998年生, 主要研究领域为Python爬虫。E-mail:1270994432@qq.com。谢杰峰,男,1998年生,主要研究领域为Java后端开发。E-mail:1543493541@qq.com。 陈智超,男,1997年生,主要研究领域为Web前端开发。E-mail: 761919540@qq.com。
本文得到广东省大学生创新训练项目(No.S201910577057)资助。黄震(通信作者),男,1980年生,主要研究领域为算法、程序设计、无线网络,
2021 年福建电脑15
要的商品,便于领取某件商品的优惠券,同时还可 以将天猫、淘宝、京东的商品同时进行比价。本系 统使用Python语言作为基本的爬虫工具,使用
Python 的 requests、selenium、re 等模块结合 IP 代
理池技术,爬取淘宝、天猫、京东三大电商网站商 品信息与优惠券信息,通过任务调度策略,对信息 进行数据清洗并存入mongo DB数据库中[5],由后 台服务器程序整理数据,并在基于HTML5的安卓 端APP展示出来,供用户查看与选择领取优惠券。
2系统的整体架构
该系统主要由Python爬虫程序、IP代理池管 理程序、数据库服务器、安卓客户端四大部分构成。 系统的实现原理如下:IP代理池管理程序将“西刺 代理” “快代理”“六六代理”等提供免费代理IP 资源的网站作为IP源,定期获取IP,存入Redis 数据库中,并通过多任务调度策略,合理去除数据 库无效或重复的IP,维护一个针对“淘宝”“京东” “天猫”的代理池。Python爬虫程序,根据设定好 的时间,定期使用IP代理池中的IP访问目标网站, 爬取相关数据并存入mongo DB数据库中供数据库 服务器调用。爬虫程序定期检测数据库中的商品信 息的有效性,去除重复和无效的信息。当用户想要 购物或想要领取相关的优惠券时,打开安卓端APP 输入相关关键字,向数据库服务器发出相应的请求 后,数据库服务器返回相关的信息在安卓端呈现。 系统整体架构如图1所示:
客户端
图1系统整体架构图
3系统的整体架构
3.1 IP代理池管理程序设计
IP代理池管理程序实现的功能是维护一个针
对“淘宝” “京东”“天猫”的代理池,以供爬虫 程序使用。IP代理池管理程序主要负责IP代理池 的创建、维护和提供外部接口[6]。
3.1.1 IP代理池创建
IP代理池创建基本流程如下:
(1) 代理IP米集:使用Python的requests抓取多个代理IP源网站的最新IP数据。
(2) IP高效存储:代理IP存入Redis数据库 中。Redis数据库是基于Key-Value数据存储方式的 高性能NoSQL数据库,可满足海量读写的要求[7]。
IP代理池创建流程如图2所示:
IP代理池管理
程序启动
从代理IP源获取IP
将获取的代理IP存入
Redis中
结束
图2 IP
代理池创建流程图
3.1.2 IP代理池的维护
IP代理池管理程序创建IP池后,定期检查整个
数据库,使用多线程异步请求技术,将整个IP代理 池中的IP进行测试并评分。满分十分,若可以连通 目标网站则分数加满,否则分数减1,当分数减到
零时将该IP从数据库中删除。IP代理池的维护流 程如图3所示:
库
16
黄震等:Python爬虫在导购系统中的应用
第2期
图3 IP
代理池的维护流程图
3.1.3
IP代理池外部接口的提供
使用Python的flask框架构建简易服务器,向 外部提供提取代理IP的接口。当服务器接收到外部 请求时,按IPIP的可用性优先级从IP代理池中提取 并返回。外部接口服务器工作流程如图4所示。
图4外部接口服务器工作流程图
3.2
Python爬虫程序设计
Python爬虫程序主要负责商品信息以及优惠券 信息的获取。根据设定好的时间,定期使用IP代理 池mongo中的IP访问目标网站,爬取相关数据并存入 DB数据库中,供数据库服务器调用。
3.2.1商品信息爬取
商品信息爬取基本流程为:
(1) 定时启动爬虫程序。(2) 调用代理池管理程序接口,获取可用 代理 IP
IP
。
(3) 使用requests库构建关于目标页面的请求,
获取页面数据。
(4) 使用
re模块提取需要的商品信息。(5) 将数据更新到mongo DB数据库中。
商品信息爬取流程如图5所示。
图5商品信息爬取流程图
3.2.2 商品优惠券爬取
商品优惠券可以从‘‘券多多”、‘‘比比乐”等提 供优惠券搜索的网站爬取。此类网站反爬虫能力较
2021 年福建电脑17
强,因此可以使用Python selenium模块,模拟浏览器的行为对信息进行爬取。
商品优惠券爬取基本流程如下:(1) 启动爬虫程序。(2)
检索商品数据库中的条目,构建相应的
爬取任务。
(3) 使用selenium框架模拟浏览器操作,访问目标网站。
(4)
使用RE模块对目标网站进行分析,提取
相关信息
(5) 将优惠券信息存入mongo DB数据库中。
商品优惠券爬取的流程如图6所示。
图6商品优惠券爬取流程图
3.3服务器软件设计
服务器程序由Java语言开发,使用Socket技术 完成与客户端的网络通信[8]。服务器软件是商品数 据库和用户端程序交互的接口,并向客户端提供一 系列诸如登录、注册、收藏等操作的API。服务器 软件设计流程如图7所示。
图7服务器软件设计流程图
3.4安卓端APP设计
安卓端APP使用HTML5开发,经过封装后可 以直接在安卓端上运行。安卓端APP的主要功能是 与用户进行交互,使用户可以使用登录、注册、搜 索商品、收藏商品、领取优惠券、监控商品价格等
功能。APP后台设计流程如图8所示:
图8
APP后台设计流程图
4
反反爬虫措施
4.1IP代理原理
IP代理指的是代理服务器,它的功能是代理网
18
黄震等:Python爬虫在导购系统中的应用
第2期
络用户去获取相关网络数据,通常用来隐藏网络用 户的真实IP地址。通常网站反爬虫是通过IP访问 频率识别出该请求是否由爬虫程序发出的,当请求 一个HTTP页面时,通常是客户端向WEB服务器 发送一个请求,WEB服务器再返回一个响应包。 但当我们使用IP代理时,客户端发出的数据包会先 到达代理服务器,代理服务器收到数据包后会进行 分析,并代替我们发出一个访问目标网站的HTTP 请求给WEB服务器。WEB服务器收到请求后返回 一个响应包给代理服务器。代理服务器收到响应包 后再返回给用户。此时WEB服务器就不知道真正 请求WEB页面的是客户端,而认为是代理IP服务 器。因此使用IP代理可以实现反反爬虫的目的。
为了保证IP代理池的高可用性,必须划分一定 的模块,以一定的步骤维持IP代理池。主要分为四 个步骤[9]:
(1)
代理IP的采集:使用网络爬虫结合多线
程技术快速从多个IP源提取大量的IP。
(2) IP高速存储:将爬取到的大量IP信息存 入高性能的数据库中。在Web 2.0/3.0时代下,新型 的NoSQL存储系统可支持超大规模数据存储,较 好支持高并发低延时的Web应用[10]。本系统使用的 是Redis存储。
(3) IP检测刷新:代理IP的可用性是随时间 变化的,不够稳定。因此为了保持代理IP的高可用 性,必须定期对IP池里的IP进行检测更新。本系 统使用的是积分制方法:定期检查整个数据库,使 用多线程异步请求技术,将整个IP代理池中的IP 进行测试并评分。满分十分,若可以连通目标网站 则分数加满,否则分数减1,当分数减到零时将该
IP从数据库中删除。
(4) 外部接口服务:该服务是连接IP代理池
和爬虫程序的接口。外部爬虫可以通过调用该服务 获取IP代理池中的可用代理IP。4.2 selenium 框架
Selenium框架是一个浏览器自动化测试框架,
经常用于网络爬虫模拟人工操作浏览器的自动化 操作中。Selenium框架支持多语言开发,比如
Python、Java、C、Ruby等。该框架支持模拟多款
浏览器操作,如Chrome、IE浏览器、火狐浏览器。 通常使用Python+Selenium+Chrome的组合完成爬 虫程序的设计,其中Chrome负责获取和渲染解析
Javascript,Selenium负责驱动浏览器与Python程序
进行对接,再由Python完成数据的处理,三者构成
一个完整的爬虫结构[11]。某些浏览器操作,比如操 作滑块、登录等操作使用编程语言不好模拟,但使
用selenium就可以很容易地解决问题。
5
系统的实现
5.1 IP代理池的实现
在服务器搭建好Redis数据库后,部署IP代理 池管理程序,设置为定时更新IP代理池数据库。使 用远程数据库管理软件连接服务器数据库后可以 看到爬取到的代理IP地址。部分代理IP如图9所 示,其中value为“IP地址:端口号”格式,score 为“分数”。
图9部分代理
IP
5.2商品信息爬取的实现
图10部分商品信息
2021 年福建电脑19
在服务器搭建好mongo DB数据库与Python爬 虫程序所需要的Python库后,部署Python爬虫程 序,设置为定时获取并更新商品数据,同时存入 mongo DB数据库中。使用远程数据库管理软件连 接服务器数据库后可以查看商品信息。商品数据库 中每个记录主要包含商品ID、商品名称、领取优惠 券的URL等字段。部分商品信息如图10所示。5.3安卓端界面的实现
-C3~7«lt»
跡(DELL)游戏本灵越游
fflG7 7 S90 1S.6英寸九代i7...提吃鸡i
优懸价H7999
距离活S»S亲町司*
07- 7,
關帅F117 17.3® 寸 144hz游财i7-…
10875H/RTX2070Supertg
Vtmv). H 15999
图11部分功能界面
安卓端APP实现登录、注册、搜索商品、收藏 商品、领取优惠券等功能。部分功能界面截图如图 11所示。
6
结语
本系统基于Python语言及其相关的库,利用IP
代理池、selenium等技术实现了爬取“淘宝”“京 东” “天猫”三大电商网站的商品信息并存入mongo
DB数据库中,通过数据库服务器与客户端的通信,
最终实现将商品与商品优惠券信息呈现于客户端 界面,供用户选择。该系统简单高效,可以改善用 户的购物体验,具有较高的实用价值。
参考文献
[1]邹彬彬.大数据下的电商导购管理系统的设计与实现[硕士学位论
文].大连理工大学,大连,2018
P]王向晖.基于消费者心理的网络营销策略.鄂州大学学报,2020,27(03):
54-55,67
[3] 郭琪,潘旭伟.电子商务中的个性化推荐研究.电子商务,2020(07):
50-51
[4] 温娅娜,袁梓梁,何咏宸,黄猛.基于Python爬虫技术的网页解析与数据
获取研究.现代信息科技,2020,4(1):12-13
[5] 李垚周,李光明.分布式数据清洗系统设计.网络安全技术与应用,
2020(2):60-62
[6] 白杨.Python代理IP定向采集爬虫的设计与实现.中国新通信,2019,
21(01):35-36
[7] 马豫星.Redis数据库特性分析.物联网技术,2015,5(3):105-106[8] 王智印,李丹.Java基于TCP/IP协议的Socket通信.产业与科技论
坛,2017,16(21):41-42
[9] 王佳鹏,徐海蛟,许培宇,何佳蕾,林冠成.面向网络爬虫的高可用动态
池系统设计与实现.福建电脑,2019,35(6):8-11
[10] 马文龙,朱妤晴,蒋德钧,等.Key-Value型NoSQL本地存储系统研究.
计算机学报,2018,41(08):1722-1751
[11] 樊涛,赵征,刘敏娟.基于Selenium的网络爬虫分析与实现.电脑编程
技巧与维护,2019(9):155-156
因篇幅问题不能全部显示,请点此查看更多更全内容