admin 管理员组

文章数量: 1087135


2024年3月11日发(作者:免费模板下载安装)

第37卷第2期

2021年2月

福建电脑

Journal of Fujian Computer

Vol

. 37

No

.2

Feb

. 2021

Python

爬虫在导购系统中的应用

黄震高蕾冼沛杰谢杰峰陈智超

惠州学院计算机科学与工程学院广东惠州516007)

2 (惠州学院电子信息与电气工程学院广东惠州516007)

11121

摘要近年来,随着互联网的发展,出现了网上购物这种全新的购物方式。网上购物己经成为年轻人购物的主要方式。但

Python

爬虫的优惠券型导购系

统。将淘宝、天猫、京东三大电商网站作为数据源,使用

Python

requests

selenium

等模块结合

IP

代理反反爬虫技术将

商品信息与优惠券信息爬取下来,对信息进行数据清洗并存入

mongo

DB

数据库中,由后台服务器程序整理数据,并在基于

HTML

5的安卓端

APP

展示出来供用户查看与选择。该系统简单高效,可以改善用户的购物体验,具有较高的实用价值。

关键词

IP

代理;优惠券;导购系统;爬虫;

HTML

5

中图法分类号

TP

319

DOI

:10.16707/

j

.

cnki

.

fjpc

.2021.02.004

网上的商品琳琅满目,如何挑选物美价廉的商品成为需要解决的问题,由此设计了一个基于

Application of Python Crawler in Shopping Guide System

HUANG

Zhen

1,

GAO

Lei

1,

XIAN

Peijie

1,

XIE

Jiefeng

2,

CHEN

Zhichao

1

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

HTML

5

-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

;

HTML

5

1

引言

近年来,随着互联网的飞速发展,以及网络化、

电商智能化、物联网等技术的兴起和国内物流效率

的不断提高,越来越多的人改变传统的购物方式,

将方便快捷的网上购物作为主要的购物方式[1-2]。新

的购物方式会产生各种各样的新问题,买家不仅需

要从琳琅满目的商品中挑选自己需要的商品,还要

兼顾优惠、价格、挑选时间的问题[3]。为了解决这

些问题,本文设计了一款基于

Python

爬虫的优惠券

型导购系统。本系统可以帮助用户更好地挑选所需

E

-

mail

: 195146501@

。高蕾,女,1976年生,主要研究领域为数据库设计、软件开发。

Email

: 377214787@

。冼沛杰,男,1998年生,

主要研究领域为

Python

爬虫。

E

-

mail

:1270994432@

。谢杰峰,男,1998年生,主要研究领域为

Java

后端开发。

E

-

mail

:1543493541@

陈智超,男,1997年生,主要研究领域为

Web

前端开发。

E

-

mail

: 761919540@

本文得到广东省大学生创新训练项目(

No

.

S

2)资助。黄震(通信作者),男,1980年生,主要研究领域为算法、程序设计、无线网络,

2021 年

福建电脑

15

要的商品,便于领取某件商品的优惠券,同时还可

以将天猫、淘宝、京东的商品同时进行比价。本系

统使用

Python

语言作为基本的爬虫工具,使用

Python

requests

selenium

re

等模块结合

IP

理池技术,爬取淘宝、天猫、京东三大电商网站商

品信息与优惠券信息,通过任务调度策略,对信息

进行数据清洗并存入

mongo

DB

数据库中[5],由后

台服务器程序整理数据,并在基于

HTML

5的安卓

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

的接口。当服务器接收到外部

请求时,按

IP

IP

的可用性优先级从

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

使用

HTML

5开发,经过封装后可

以直接在安卓端上运行。安卓端

APP

的主要功能是

与用户进行交互,使用户可以使用登录、注册、搜

索商品、收藏商品、领取优惠券、监控商品价格等

功能。

APP

后台设计流程如图8所示:

图8

APP

后台设计流程图

4

反反爬虫措施

4.1

IP

代理原理

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安卓端界面的实现

-

C

3~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


本文标签: 爬虫 代理 数据库 商品 数据