Python爬虫运用之数据分析

      今天,我爬取了豆瓣,的《逃避可耻但很有用》的短评,可能队数据分析还不太了解,所以爬取什么都不太懂,也就爬取了评星,日期,还有评论。以下是代码。




# -*- coding: utf-8 -*-

import requests

frombs4 import BeautifulSoup

import re

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0','Cookie':'bid=xQ0BMVjSem8; __utma=30149280.835324949.1486297712.1487313940.1487321509.4; __utmz=30149280.1487321509.4.4.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/search; ll="118130"; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1487321934%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D39_qCZOrp9cDojY4vvLUS5DYN0eU4kifU3CGzStU3V7%26wd%3D%26eqid%3Dc0ddddb90001116a0000000258a69c0f%22%5D; _pk_id.100001.8cb4=ebaf729a854c56d8.1487245175.3.1487321957.1487314158.; _vwo_uuid_v2=1A8F9B4EEC4F6DBD33D4A2263CFEEB5D|a56d1425e9df513dba4da1881d8ab8fb; __utmc=30149280; ps=y; push_noty_num=0; push_doumail_num=0; __utmv=30149280.15792; ap=1; __utmb=30149280.5.10.1487321509; _pk_ses.100001.8cb4=*; __utmt=1; dbcl2="157929414:qvDHVrTju6Y"; ck=BMh9'}

class Comments():

def __init__(self,url):

self.url = url.split('?')[0]#分隔页面

self.pages = []

def getPages(self,first)

:trueurl = self.url + first

try:

html = requests.get(trueurl,headers=headers).text

nexth = BeautifulSoup(html,'html').find('div',id='paginator').find_all('a')[-1]

nextpage = nexth['href']self.pages.append(nextpage)

print len(self.pages)

if len(self.pages) > 50:

return u'前',len(self.pages),u'页抓取结束'

return self.getPages(nextpage)#递归地抓取页数

except AttributeError :

print u'页面提取结束!'

def getInfo(self):

f = file("comments.txt",'a+')

for page in self.pages:

pageulr = self.url + page

content = requests.get(pageulr,headers=headers).text

try:

all_info = BeautifulSoup(content,'html').find('div',id="comments").find_all(class_="comment-item")

for info in all_info:

pattrern = re.compile('(.*?)(.*?)<',re.S)

infolist = re.findall(pattrern,str(info))

for il in infolist:

star = il[0].strip()

time = il[1].strip()

comments =il[2].strip()

data = 'star='+star + '\ttime=' + time + '\ncomments=' + comments + '\n\n'

f.write(data)

except AttributeError:

print u'评论提取结束'

f.close()

print u'文件写入完毕!'

url ='https://movie.douban.com/subject/26816519/comments?status=P'

com = Comments(url)

com.getPages('?status=P')

com.getInfo()

以上


获得的数据用xlsxwriter分析得到三张图(= =!)很少吧。。


时间分布

从将近30页的评论中获取的时间分布,可以看出来2016-12-20开始爆发式增长的评论量!!

查了下《逃》在日本首播的时间是2016-10-11,这时候还没几个人评论。。

然后就是到2016-11-30,这时候第一批翻译已经出来了,但人气还是很低的样子 = =, 然后就是2016-12-20 号的最终回字幕组赶出来了!评论量瞬间飙升!看来大家都喜欢看完整部剧再来评论呀。(瞎几把分析)

但是,评论多就人气好了吗,那可不一定,于是我又分析了高峰值评论区间的评分和整体评分趋势


上图:整体区间 下图:高峰值区间

看得出来,高峰值的区间内评分波动较小,均值稳定在4悉星上下,这区间也算是自来水们的馈赠了。整体上波动较大,可能受众人群不同,对作品的评价也不同。


然后就是评分分布


评分占比

最多的评分是四星,从评论也得知,四星的占比大部分是gakki老公(误),就是新垣结衣的粉,少部分是男主新野源的粉丝(程序猿表示感动)。


总之,这一场毫无意义的数据分析就结束了……

吗?

不,我还要贴一贴一些评论才行!


洗洗睡。


没错没错!


好的。


就这样结束吧~~还是拖到了凌晨。起床再爬取一些更有意义的数据然后分析吧。



记第一次数据分析 :D


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • http header 消息通常被分为4个部分:general header即头部, request header...
    徐薇薇阅读 32,080评论 0 5
  • 1#!/usr/bin/env python2.7 2 # 头部信息3 headers = {4 'Host...
    静熙老师哈哈哈阅读 573评论 0 0
  • 我们先来一个简单的卡拉OK效果练练手吧 这个非常容易,设置定时器计算进度progress。重写UILabel的dr...
    阿文灬阅读 986评论 0 6
  • 还有7天周末时间,20天工作日。 需要准备综合应用能力A,职业能力倾向测试。 计划今天,完成一套真题或者模拟题。 ...
    芥心阅读 592评论 0 0