作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159
.爬虫综合大作业
- 选择一个热点或者你感兴趣的主题。
- 选择爬取的对象与范围。
- 了解爬取对象的限制与约束。
- 爬取相应内容。
- 做数据分析与文本分析。
- 形成一篇文章,有说明、技术要点、有数据、有数据分析图形化展示与说明、文本分析图形化展示与说明。
- 文章公开发布。
春节电影档《流浪地球》成为了一匹黑马,其总票房位列中国影史票房成绩第二名,仅次于《战狼Ⅱ》的56.85亿。更被人们誉为中国科幻片崛起的代表作。因此小编决定爬一爬豆瓣的《流浪地球》热评。
通过登录信息我们可以F12找到cookie和User-Agent:
部分代码:
def getHtml(url): cookies = { 'PHPSESSID': 'Cookie:viewed="27061630"; bid=njcVrq06buk; gr_user_id=79844b36-a38d-416e-ab0a-ab7dab65e399; _vwo_uuid_v2=DDFABD6349DE159B7A770F706AF98B5C7|108d1c288dd9ae4638080585c99bb256; ll="118281"; __utmc=30149280; push_noty_num=0; push_doumail_num=0; __utmv=30149280.19620; __gads=ID=62398e893e314208:T=1557373574:S=ALNI_MbxAaUAZvIvQI1wg75Wr1g4xn6xng; douban-profile-remind=1; vtoken=phone_reset_password%20697f3db2259848a195bd9a504954adda; last_login_way=account; __utma=30149280.892170059.1557326585.1557373395.1557379135.3; __utmz=30149280.1557379135.3.2.utmcsr=accounts.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/passport/login; dbcl2="196206319:Wzv94dl38Ec"; ck=n1Ou; login_start_time=1557379414275; _pk_ref.100001.2fad=%5B%22%22%2C%22%22%2C1557381592%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; _pk_id.100001.2fad=b9b7f4fa9c5601f5.1557373412.3.1557381592.1557379271.; _pk_ses.100001.2fad=*'} headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'} req = requests.get(url, headers=headers, cookies=cookies, verify=False); req.encoding = 'utf8' soup = BeautifulSoup(req.text, "html.parser") return soup;
找到想爬的内容
部分代码:
def getText(soup): comment = [] for pl in soup.select('.comment-item'): comment_b = {} user = pl.select('.comment-info')[0]('a')[0].text look = pl.select('.comment-info')[0]('span')[0].text score = pl.select('.comment-info')[0]('span')[1]['title'] time = pl.select('.comment-time ')[0]['title'] pNum = pl.select('.votes')[0].text text = pl.select('.short')[0].text text2 = text.replace(' ', ' ') comment_b['用户名'] = user comment_b['观看情况'] = look comment_b['评分情况'] = score comment_b['评论时间'] = time comment_b['评论'] = text2 comment_b['赞同次数'] = pNum comment.append(comment_b) print('爬取成功 ', len(comment), ' 条') return comment;
爬取截图:
爬取的内容保存到excel里
f1 = pandas.DataFrame(comment) f1.to_csv(r'D:ab.csv', encoding='utf_8_sig')
词云图:
网友评分统计:
for row in csv_reader: pingfen.append(row[3]) del pingfen[0] te = {}; for w in pingfen: te[w] = pingfen.count(w); print(te.items()) temp = 1; pingfenlist = {} for i in te.items(): if (temp < 6): pingfenlist[i[0]] = i[1] else: break temp = temp + 1 print(pingfenlist)
生成饼图
总结:网友对《流浪地球》评分相当高,有65%的推荐率和25%的力荐率。从词云可以看出来《流浪地球》的评论中科幻电影,中国,科幻,国产出现频率很高,可以看出网友把这种高质量的科幻片和中国,国产联系起来。因此网友应该对于国产科幻片开始有一定的信心。最后从数据分析来看《流浪地球》是值得一看的国产科幻片。