2019年2月第22卷第4期
中国管理信息化
China Management Informationization
Feb.,2019
Vol.22,No.4
0 引 言
随着电商时代的到来,网络购物已经越来越普遍。很多购物网站保存了大量用户购物后的评价信息,与产品评分相比,这些信息能够真实地反映产品受大众喜爱的程度、哪些地方需要改善、哪些地方表现优秀、哪些是和该产品有竞争关系、竞争的焦点是什么等,从而可以作为第一手的数据资料。越来越多的研究发现了Web评论的价值,作为评论挖掘的基础性工作,评论的爬取显得尤为重要。本文以淘宝为例,分析淘宝网站的特点,通过评语保存的格式、URL的设计特征等方面设计和实现淘宝一般网店和淘宝商城评语的爬取方案。
1 相关技术
1.1 网络爬虫
网络爬虫是一个自动采集网页内容的程序,是网络搜索引擎的重要组成部分,能够从因特网上下载网页,获取网页的内容。常见的网络爬虫分为以下的几种类型。
第一,批量型网络爬虫。限制抓取内容的属性,包括抓取范围、特定目标、限制抓取时间、限制数据量以及限制抓取页面,其显著特征是限制爬虫的爬取范围。第二,增量型网络爬虫。与批量型网络爬虫正好相反,由于没有爬取范围限制,爬虫会不停地进行爬取直到抓完所有数据。该种类型的网络爬虫一般在搜索引擎的网站或程序上应用。第三,聚焦型网络爬虫。该类爬虫可以简单地理解为一个无限细化的增量网络爬虫,可以对诸如行业、内容、发布时间、页面大小等很多因素进行细致筛选。基于此,笔者在考虑淘宝评语爬取的作用和研究意义的基础上,研究了第一种批量型网络爬虫。
1.2 Python
Python语言是一种简单强大的高级编程语言,具有丰富的数据结构、灵活的程序处理方式以及大量支持该语言的第三方函数库,同时在爬虫和大数据处理方面也具有非常明显的编程优势。
Python作为一个面向对象的脚本语言,在抓取网页接口时,相比其他静态编程语言更简洁,相比其他动态的脚本语言,Python有相对完整的访问网页文档的API。由于Python具有易于学习、易于维护、可移植、可扩展、有广泛的库等特点,已成为设计网络爬虫算法的不二之选。
2 爬取淘宝评语
基于淘宝平台的网店大致分为以下两种:一种是普通网店,不需要支付任何费用,可以免费申请开店,主要靠从开店之日起积累流量,获取较高等级后实现盈利最大化;另一种是天猫商城,付费开店,每个周期都要支付一定的管理费用,以近期的评分为主要评价依据。这两种网店都积攒了较多的用户评论,但评论的存储格式略有不同,本文将对这两种形式的网店进行分析。
2.1 URL链接与爬取页面
淘宝的商品评论以Json格式保存,URL链接不能直接从网站的URL地址获取,需要打开网店的某个商品页面,然后运行浏览器的一个网页分析工具(开发人员工具),通过工具分析页面隐含的所有超级链接,提取包含所有评论的超级链接即可。表1为同价位区间不同网店获取评论的统计数据。
2.2 爬取的统计数据
经分析发现,获取的评语链接只是当前的页面而不是全部页面,即链接是分页保存的,当前获得的是CurrentPage=1,也就是第一页,获取全部页数可通过分析Json文档的信息实现。表1显示了华为荣耀9不同类型网店的评语链接、可以爬取的评价数量以及实际的累计评价数量。由表1可知,能够获取的评论数据小于实际累计评价数,特别是淘宝商城的网店,其评价最多只能爬取1 979条。
3 爬取算法设计与实现
本算法借用Python提供的工具包Requests获取URL地
基于Python的淘宝评论爬取技术研究
杨 帆,董 俊,唐宏亮,张 昊
(湖北第二师范学院 计算机学院,武汉 430205)
[摘 要]本文提出一种爬取网上商品评语的算法,以Python语言为基础,利用该语言的爬虫工具包设计并实现了淘宝一般网店和淘宝商城的商品评语的爬取,并重点分析了淘宝在线平台的评语保存特征、评语链接的获取方式,以及算法运行时发生中断的例外处理机制,最终能较好地开展评论爬取工作。
[关键词]Python;在线评论;网络爬虫;评论爬取
doi:10.3969/j.issn.1673 - 0194.2019.04.074
[中图分类号]TP393.092 [文献标识码]A [文章编号]1673-0194(2019)04-0162-02
[收稿日期]2019-01-05
[基金项目]2018年度湖北省教育厅人文社会科学研究项目(18Q
淘宝网怎么开店182)。
162/ CHINA MANAGEMENT INFORMATIONIZATION
/ 163
CHINA MANAGEMENT INFORMATIONIZATION 信息管理
址对应的数据内容,用Json 对获取的数据进行解析和转换,用Pandas 对转换的数据进行处理,并保存到Excel 文件中。一般网店和淘宝商城获取数据的方式基本相同,只是Json 格式不同,处理时可稍做修改,此外,评论页面总数获取的字段也不同,可在提取时修改获取名称。3.1 首页加载以及页数获取
通过Request 对象获取评语链接对应的原始Json 数据,分析数据格式的特点,发现LastPage 项中含有的页数信息,通过列表提取其值,并加载首页数据。3.2 全部页面数据获取
根据首页中的页面信息循环所有页面评语,获取并保存Json 格式的数据,若此过程在执行中发生了中断,后经过分析发现程序本身没有语法错误,导致中断的根本原因可能在于数据源的动态性。网店评论是实时更新的,程序运行抓取时有可能发生更新操作,故导致程序运行中断。为避免程序中断,在算法
中应加入例外处理机制,发生异常就重新加载,从而避免程序执行过程中突然停止运行。例如处理方式使用try-except
方式实现,部分代码如下。
try:
urlfor='rate.taobao/feedRateList.htm?auctionNumId =549031678000&userNumId=206362892¤tPageNum='+str(i)
print(urlfor)
datafor =rq.get(urlfor).text.strip().strip('()')……except:
urlfor='rate.taobao/feedRateList.htm?auctionNumId =549031678000&userNumId=206362892¤tPageNum='+str(i)
print(urlfor)
(urlfor).text.strip().strip('()')……3.3 保存到文件
抓取全部页面的评论后,保存到Excel 文件中,部分数据的截图如图1所示。
表1 同价位区间不同网店获取评论的统计数据
型号价格/元店名评语链接
爬到的评价数/条累计评价/条
华为荣耀9
2300~3000
荣耀官方旗舰店1all/list_detail_rate.htm?it emId=552919553653&spuId=855519187&sellerId=1114511827¤tPage=1 1 979
58 392
华为荣耀92300~3000荣耀官方旗舰店2all/list_detail_rate.htm?it emId=552856496808&spuId=856588210&sellerId=1114511827¤tPage=1 1 979 2 859
华为荣耀92300~3000中宽通讯行rate.taobao/feedRateList.htm?au ctionNumId=553160852
842&userNumId=
206362892¤tPageNum=1 1 242 1 260
华为荣耀92300~3000红日通讯官方授权
rate.taobao/feedRateList.htm?au ctionNumId=551731783114&userNumId=
270215026¤tPageNum=1
4 999
5 955
图1 部分抓取结果
4 结 语
基于Python 的淘宝评论爬取技术可以很好地实现淘宝网店的评语爬取任务,为分析产品的用户感受奠定了较好的信息基础,但仍然存在一些不足。例如,算法的自动化程度不高,不能针对产品名称直接从淘宝网站到相应的评语页面并下载,只能通过手动方式在访问网站获取评语的超级链接后进行下载。此外,例外算法有待改进,本算法中的例外只是简单实现了程序的再次启动,没有从根源上解决阻塞问题,导致分析效率低下。后续研究将从这些方面进行改进,以获得更好的抓取效果。
主要参考文献
[1]于娟,刘强.主题网络爬虫研究综述[J].计算机工程与科学,2015(2).[2]黄红梅,张良均.Python 数据分析与应用[M].北京:人民邮电出
版社,2017.
[3]胡鹏,学习资源爬虫系统设计与实现[J].软件导刊,2017(4).
[4]杜姝.淘宝评论挖掘及其应用研究[D].成都:电子科技大学,2017.[5]张艳辉,李宗伟,赵诣成.基于淘宝网评论数据的信息质量对在线
评论有用性的影响[J].管理学报,2017(1).
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论