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