python爬豆瓣影评&根据词频生成词云
通过爬取豆瓣上正在上映的电影影评信息,并根据评论词频生成词云。
一、需要的包
import warnings # 防止出现future warning
warnings.filterwarnings("ignore")
from urllib import request # 用于爬取网页
from bs4 import BeautifulSoup as bs # 用于解析网页
import re
import pandas as pd
import numpy as np
import jieba # 用于切词
from wordcloud import WordCloud # 用于生成词云
import matplotlib.pyplot as plt
import matplotlib
二、获取电影列表
打开豆瓣上海(https://movie.douban.com/cinema/nowplaying/shanghai/),观察源代码内需要爬取内容的特征。
![](https://i-blog.csdnimg.cn/blog_migrate/18cfd1c5352d1f49914b2079b6e1f1a8.png)
1、获取nowplaying电影,并将每一个电影的内容都存在list内。
'''get url'''
url = 'https://movie.douban.com/nowplaying/shanghai/'
resp = request.urlopen(url)
html_data = resp.read().decode('utf-8') # 防止乱码
soup = bs(html_data, 'html.parser') # 解析
nowplaying = soup.find_all('div', id='nowplaying') # 网页中id为nowplaying是现在正在上映的电影。
nowplaying_list = nowplaying[0].find_all('li', class_='list-item') # 寻找所有上映电影相关信息
2、提取电影名称和id
'''get movie list'''
movie_list = [] # 获取电影id和电影名
for item in nowplaying_list:
movie_dic = {}
movie_dic['id'] = item['id']
movie_dic['name'] = item['data-title']
movie_list.append(movie_dic)
当前nowplaying电影列表
[{'id': '26683723', 'name': '后来的我们'},
{'id': '26420932', 'name': '巴霍巴利王2:终结'},
{'id': '26774033', 'name': '幕后玩家'},
{'id': '26430636', 'name': '狂暴巨兽'},
{'id': '4920389', 'name':