通过网络请求的方式获取响应数据,再对获取的数据进行分析提取和汇总,并储存到xlsx表格中。在进入互联网存储海量数据的新时代,如何快速且准确的获取需要的数据,爬虫无疑是最佳的解决方案之一。
二.爬虫设计方案
1.爬虫名称
2.爬取的内容和数据特征分析
数据的特征分析为:分词、评分等级饼状图、评分内容词云、可视化分析
3.爬虫设计方案概述
技术难点
1.主题页面的结构和特征分析
翻页信息:
2.Htmls页面解析
3.节点(标签)查找方法与遍历方法
查找方法:lxml库的xpath函数
lxml库是一个python的xml解析库,它支持HTML和xml的解析,并且支持Xpath解析方式。相比于原生的xml解析而言,lxml的接下效率相当高。
Xpath是一门在xml文档中查找信息的语言,虽然它最早是用来搜寻XML文档的,但它也可以用于查找html语言。它的选择功能十分强大,提供了非常简单明了的路径选择表达式,另外他还提供了超过100个内建函数用于数据处理。
四.网络爬虫程序设计
1.数据的爬取与采集
2.项目数据进行清洗和处理
(1)缺失值处理与重复值处理
由于数据信息的不完整,在数据爬取过程中经常会遇到NaN(数据缺少情况),因此首先需要对缺少数据进行剔除和过滤,Pandas库的dropna函数提供了快速删除空值函数的方法,设置axis=0,subset=df.columns即可快速删除含有空值的全部行。如下图经过预处理后的完成数据清洗的第一步。但发现没有重复值与缺失值
(2)异常值处理
通过为评分一列分类得到以下结果,结果发现存在r.5数据,因此需要对其进行剔除
剔除后的结果
结果显示剔除后的数据量减少到518个
剔除后的总数据
代码:
3.数据分析与可视化
通过对评分进行分类得到以下结果:
随后对评分进行可视化分析:代码如下:
#绘制饼状图
得到以下结果:
使用结巴分词精准模式对文本进行分词处理,将所以文本进行合并,并进行分词得到以下结果:
发现分词结果存在很多符号,将其进行剔除即可。
剔除完特殊符号的结果如下:
结巴分词结果统计
随后基于worldcloud包对结果进行可视化:
本次测试评分数与汉字评价长度的关系,探索其关系:
首先对数据进行分类得到,随后按照不同类别进行计算得到不同星级的平均评价长度,如下图所示
随后对其进行线性拟合得到以下方程:
随后将其可视化得到以下结果:
线性拟合部分代码
deflinefit(x,y):N=float(len(x))sx,sy,sxx,syy,sxy=0,0,0,0,0foriinrange(0,int(N)):sx+=x[i]sy+=y[i]sxx+=x[i]*x[i]syy+=y[i]*y[i]sxy+=x[i]*y[i]a=(sy*sx/N-sxy)/(sx*sx/N-sxx)b=(sy-a*sx)/Nr=abs(sy*sx/N-sxy)/math.sqrt((sxx-sx*sx/N)*(syy-sy*sy/N))returna,b,rx=[5.0,4.5,4.0,3.5,2.5]y=[124.748,131.61490683229815,136.0142857142857,148.55555555555554,183.0]a,b,r=linefit(x,y)print("y=%10.5fx+%10.5f,r=%10.5f"%(a,b,r))
五.源码
六.总结
经过一学期的网络爬虫学习,我意识到在生活中或是未来工作中,网络爬虫是我可以利用的一种高效工具。网络爬虫技术在科学研究、Web安全、产品研发等方面都起着重要作用。在数据处理方面,如果没有数据就可以通过爬虫从网上筛选抓取自己想要的数据。并且伴随着网络技术的发展,我们早已进入信息爆炸的时代,面对繁冗的数据,我们很难从里面提取到有价值的数据,为了解决传统人工收集数据的不便的问题,通过利用爬虫技术就可以轻松找到自己想要的数据。在本学期的学习中虽然遇到了很多困难,通过一次次的纠正,不断地找出问题所在,最后解决问题。这仿佛是一条登山之路,比起唾手可得的成功,向上攀登的路程更加令我振奋,我相信这也是学习爬虫技术的意义之一。
本次课程设计,让我学会了爬虫的基本原理,数据清洗和处理的方式。其中,爬虫常用requests模拟请求网页,获取数据。同时使我熟悉了文本数据分析的基本流程,在词云可视化和线性拟合方面也有了诸多的体悟。
我会在接下来的日子继续钻研爬虫的知识,强化数据分析和可视化的能力。