孙建言 马雨欣 武文杰
摘要:通过Python和Scrapy框架的使用,实现了一个对电商商品和商品评价信息的爬取系统,文中详细地介绍了该系统的设计过程,能够完成需求中的功能,并且对所有爬取下来的数据进行了分析,对商品的不同品牌各类信息进行比对。
关键词:网络爬虫;Python;数据分析
中图分类号:G434 文献标识码:A
文章编号:1009-3044(2019)26-0061-03
开放科学(资源服务)标识码(OSID):
Abstract: Through the use of Python and Scrapy framework, a crawling system for commercial mobile phone products and commodity evaluation information is realized. The design process of the system is introduced in detail, which can complete the functions in demand. All the crawled data are analyzed and the information of different brands of products is compared.
Key words: network crawler; Python; data analysis
1 引言
近年来,随着电商行业的兴起和物流产业的飞速发展,人们网上购物日益普遍。电商平台商品琳琅满目良莠不齐,加上商家往往夸大商品效果,甚至采用刷单手段增加商品人气,往往造成消费者不能理性选择优质商品。
人们早已意识到互联网中的数据是有待开采的巨大金矿,这些数据将会改善我们的生活,网络爬虫的出现以及相应人才的增多正是基于对数据价值的重视。目前已经存在很多基于网络爬虫的比货网站,但大多数都只是爬取商品的参数的比较,难以站在消费者的角度上去比较商品之间的优劣。
本課题目的是通过爬虫技术,使得在电商购买商品时能从各参数和用户体验方面给消费者一个客观、可靠、可信的购机推荐。
2 关键性开发技术
2.1 Python
Python是一种开源的面向对象的脚本语言。Python由于其易理解性、易读性以及简洁性,以及对云计算、大数据与人工智能开发有很好的支持,因此越来越受到大众的喜欢。它的代码重用性很高,Python的模块库庞大到恐怖,几乎无所不包。因此,没有特殊要求的网络爬虫,最好选择使用Python。
2.2 Scrapy
Scrapy是一个使用Python语言编写的开源网络爬虫框架,目前由Scrapinghub Ltd维护。Scrapy具有简单易用、灵活易拓展、开发社区活跃,并且是跨平台的等优点。在Linux、MaxOS以及Windows平台都可以使用。Scrapy是Python语言下最流行的网络爬虫框架,开发者只需要对几个特定的模块进行开发就能写出一个稳定高效的网络爬虫。所以本爬虫程序选择了这个框架。
2.3 Django
Django项目是Python语言的定制框架,它源自一个在线新闻Web站点,于2005年以开源的形式被释放出来。Django框架的核心组件包括用于创建模型的对象关系映射、为最终用户设计完美的管理界面、一流的URL设计、设计者友好的模板语言、缓存系统。Django鼓励快速开发,并遵循MVC设计理念。它的主要目的是简便、快速地开发数据库驱动的网站。它强调代码的复用,还有许多功能强大的第三方插件,甚至可以很方便地开发出自己的工具包,这使Django具有很强的可拓展性。
2.4 Ajax
AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)是使用JavaScript向服务器发出请求,并获取返回信息,但是AJAX技术与传统方式不同的是,使用AJAX不会刷新整个页面。这种技术拓展了Web应用的功能,丰富了Web客户端表现的能力,体现出了特别好的交互性。大型网站一般都会用这种技术。
3 爬虫框架分析
在从网站中提取数据时,没有 "一刀切" 的方法。很多时候都会采取临时方法,如果开始为执行的每个小任务编写代码,那么使用Scrapy框架是最佳的选择,因为其提供了一系列方便的应用模板。
Scrapy 使用了Twisted异步网络库来处理网络通讯,并从数据流的角度揭示了Scrapy工作原理,整体架构大致如图1所示。
其中,各个组件的介绍如下表所示。
4系统整体模块设计
各个模块功能简述如下:
爬虫模块:主要是用来爬取数据,爬取京东商城上的手机商品信息的数据,包括手机的标题、手机的品牌、手机的价格、手机的图片链接、手机的参数。爬完这些信息后,接下来会对每个商品的评价的进行爬取,这里需要说明的是京东商品的评价只展示一百页,一百页之后就无法获取数据了。
数据分析模块:主要是对爬取的评论进行分析,采用了结巴中文分词包,对评论进行分词,再通过构造的stop字典、情感字典、程度词字典等,对每条评论进行情感极性判断,最终计算出每个商品积极情感率。
数据展示模块:主要是对爬取的商品信息以及数据分析的结果和pygal对获取的数据进行各种绘图,最终通过ajax与django后端交互在网页中显示出来。
由于分析网页评论加载方式,发现是和价格加载方式一样,通过json接口,而各商品评论直接json接口的主要区别也在于商品的id,于是就设计了如下爬虫方案: