分布式消我爬取豆瓣10万短评,告诉你《复仇者联盟4》在讲什么?

  

分布式消我爬取豆瓣10万短评,告诉你《复仇者联盟4》在讲什么?

 

  前言

  昨晚,焚香、沐浴、更衣!怀着朝圣般的心情。就像灭霸一样!去看了妇联4的终局之战。不得不说,票价有点小贵,整体效果还算可以,就是剧情有点懵逼。中间眯了几下(时长真的有点长),本来想玩玩手机,环顾四周看大家都这么认真的样子,默默的收了起来,请原谅我这小白。

  截止目前,《妇联4》已上映2天,今晚累计票房突破 10 亿应该是妥妥的,豆瓣评分 9.0 分。

  爬取

  主要是想知道这爆米花电影(其实,环顾四周没有一个人吃爆米花)大家都有什么评价,这里主要是爬取《妇联4》的好、中、差短评并分词分析。

  爬取数据:

  __author__ = 小柒

  __blog__ = https://blog.52itstyle.vip/

  import os

  # 导入requests库

  import requests

  # 导入文件操作库

  import codecs

  from bs4 import BeautifulSoup

  # 给请求指定一个请求头来模拟chrome浏览器

  global headers

  headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',

  'cookie': 'networkwww.douban.comheaders查看cookie'}

  # 好评,中评,差评

  # https://movie.douban.com/subject/26100958/comments?start=0limit=20sort=new_scorestatus=Ppercent_type=h

  # https://movie.douban.com/subject/26100958/comments?start=0limit=20sort=new_scorestatus=Ppercent_type=m

  # https://movie.douban.com/subject/26100958/comments?start=0limit=20sort=new_scorestatus=Ppercent_type=l

  server = 'https://movie.douban.com/subject/26100958/comments'

  # 定义存储位置

  global save_path

  save_path = os.getcwd()+\\Text\\+'复仇者联盟4短评_好评.txt'

  global page_max

  # 好评 自行计算页码

  page_max = 252 # 500 短评论,后面就看不到了,不知道是否豆瓣有意而为之给隐藏了,哈哈哈原来是没登录导致的。

  global comments

  comments = ''

  # 获取短评内容

  def get_comments(page):

  req = requests.get(url=page)

  html = req.content

  html_doc = str(html, 'utf-8')

  bf = BeautifulSoup(html_doc, 'html.parser')

  comment = bf.find_all(class_=short)

  for short in comment:

  global comments

  comments = comments + short.text

  # 写入文件

  def write_txt(chapter, content, code):

  with codecs.open(chapter, 'a', encoding=code)as f:

  f.write(content)

  # 主方法

  def main():

  for i in range(0, page_max):

  try:

  page = server + '?start='+str(i*20)+'limit=20sort=new_scorestatus=Ppercent_type=h'

  get_comments(page)

  write_txt(save_path, comments, 'utf8')

  except Exception as e:

  print(e)

  if __name__ == '__main__':

  main()

  最终爬取完成,好评文件居然有足足的 200MB,而中评和差评加起来才 20MB 左右。

  分析数据:

  使用结巴中文分词第三方库来进行高频分析。

  import jieba

  import os

  txt = open(os.getcwd()+\\Text\\+复仇者联盟4短评_差评.txt, r, encoding='utf-8').read()

  words = jieba.lcut(txt)

  counts = {}

  for word in words:

  if len(word) == 1:

  continue

  else:

  counts[word] = counts.get(word, 0) + 1

  items = list(counts.items())

  items.sort(key=lambda x: x[1], reverse=True)

  for i in range(0, 10):

  word, count = items[i]

  print({0:6}{1:6}.format(word, count))

  词云图

  差评:

  

分布式消我爬取豆瓣10万短评,告诉你《复仇者联盟4》在讲什么?

 

  中评:

  

分布式消我爬取豆瓣10万短评,告诉你《复仇者联盟4》在讲什么?

 

  差评都不带一个脏字,好评就不再贴了(真正原因是分词统计的时候内存爆掉了)。

  小结

  如果你不是漫威的迷,劝你还是不要去了。突然某个情节周围一片欢呼,会让你觉得自己是个*,对,我就是那个*!!!

 

上一篇:Wordpress 去掉评论框下方的 You may use these HTML tags and attributes


下一篇:Mysql清空表(truncate)与删除表中数据(delete)的区别