爬取电影评论并绘制词云
一 获取豆瓣最新电影的id号和电影名
import requests
from bs4 import BeautifulSoup
url='https://movie.douban.com/cinema/nowplaying/xian/'
#1)获取页面信息
response=requests.get(url)
content=response.text
#print(content)#2)分析页面,获取id和电影名
soup=BeautifulSoup(content,'lxml')
#先找到所有的电影信息对应的li标签
nowplaying_movie_list=soup.find_all('li',class_='list-item')
#存储所有的电影信息[{'title':'名称','id':'id号'}]
movies_info=[]#依次遍历每一个li标签,再次提取需要的信息
for item in nowplaying_movie_list:nowplaying_movie_dict={}#根据属性获取title内容和id内容#item['data-title']获取li标签里面的指定属性data-title对应的value值;nowplaying_movie_dict['title']=item['data-title']nowplaying_movie_dict['id']=item['id']nowplaying_movie_dict['actors']=item['data-actors']nowplaying_movie_dict['director']=item['data-director']#将获取的{'title':"名称", "id":"id号"}添加到列表中;movies_info.append(nowplaying_movie_dict)
print(movies_info)
二 获取指定电影的影评信息
import threading
import requests
from bs4 import BeautifulSoup#1)爬取某一页的评论信息
def getOnePageComment(id,pageNum):url='https://movie.douban.com/subject/%s/?from=playing_poster' %(id)#2)爬取评论信息的网页内容content=requests.get(url).text#3)通过bs4分析网页soup=BeautifulSoup(content,'lxml')#分析网页得知,所有的评论信息都是在span标签,并且class为shortcommentsList=soup.find_all('span',class_='short')pageComments=""#依次遍历每一个span标签,获取标签里面的评论信息,并将所有的评论信息存储到pageComments变量中for commentTag in commentsList:pageComments+=commentTag.textprint('%s page' %(pageNum))global commentscomments+=pageComments#2)爬取某个电影的前10页评论信息;
id = '30163509' #指的是电影飞驰人生
comments = ''
threads = []
#爬取前10页的评论信息;获取前几页就循环几次;
for pageNum in range(10): # 0 , 1 2 3 4...9pageNum = pageNum + 1#通过启动多线程获取每页评论信息t = threading.Thread(target=getOnePageComment, args=(id, pageNum))threads.append(t)t.start()#等待所有的子线程执行结束,再执行主线程内容;
_ = [thread.join() for thread in threads]
print("执行结束")
with open("%s.txt" % (id), 'w') as f:f.write(comments)
三 数据清洗
完整的分析过程:
- 数据的获取: 通过爬虫获取(urllib|requests<获取页面内容> + re|bs4<分析页面内容>)
- 数据清洗: 按照一定的格式对文本进行处理
import re
import wordcloud
import jieba#1对于爬取的评论信息进行数据清洗(删除不必要的逗号,句号,表情,只留下中文或英文)with open('./30163509.txt') as f:comments=f.read()
#通过正则表达式实现
pattern=re.compile(r'([\u4e00-\u9fa5]+|[a-zA-Z]+)')
deal_comments=re.findall(pattern,comments)
newComments=""for item in deal_comments:newComments+=item
print(newComments)
四 词云分析
通过jiaba(通过词库切割中文)、wordcloud(制作词云)模块实现
import jieba
import wordcloud
import matplotlibtext='马云曾公开表态称对钱没兴趣称其从来没碰过钱上了微博热搜但近来又说他对花钱很有兴趣'#强调文件中出现的所有词语;
jieba.load_userdict('./doc/newWord')
#1)切割中文,lcut返回一个列表,cut返回一个生成器;
result = jieba.lcut(text)
print("切分结果:", result)#2)绘制词云
wc = wordcloud.WordCloud(background_color='snow',font_path='./font/msyh.ttf', #处理中文数据时min_font_size=5, #图片中最小字体大小;max_font_size=15, #图片中最大字体大小;width=200, #指定生成图片的宽度
)
wc.generate(",".join(result))
wc.to_file('./doc/douban.png')
对电影进行词云分析
import jieba
import wordcloud
import numpy as np
# 在python2中处理图像,Image;python3中如果处理图像,千万不要安装Image,安装pillow
from PIL import Image#1)切割中文,lcut返回一个列表,cut返回一个生成器;
result = jieba.lcut(open('./30163509.txt').read())#2)打开图片
imageObj = Image.open('./doc/mao.jpg') #选定图片样子,生成的便是这个样子
cloud_mask = np.array(imageObj)#3)绘制词云
wc = wordcloud.WordCloud(mask = cloud_mask,background_color='red',font_path='./font/msyh.ttf', #处理中文数据时min_font_size=5, #图片中最小字体大小;max_font_size=50, #图片中最大字体大小;width=500, #指定生成图片的宽度
)
wc.generate(",".join(result))
wc.to_file('./doc/douban.png')
爬取百度今日热点前10新闻
from bs4 import BeautifulSoup
from urllib.request import urlopendef get_html(url):a = urlopen(url).read().decode('gb2312')return adef get_info(text):soup = BeautifulSoup(text, 'html5lib')info_li = soup.find_all('a', class_='list-title')news_li = [info_li[i].string for i in range(10)]return news_lidef main():url = 'http://top.baidu.com/buzz?b=341'new_li = get_info(get_html(url))[print(i) for i in new_li]main()
爬取电影评论并绘制词云相关推荐
- 详解使用Python爬取豆瓣短评并绘制词云
使用Python爬取豆瓣短评并绘制词云 成果如下(比较丑,凑合看) 1.分析网页 打开想要爬取的电影,比如<找到你>,其短评如下: 查看源代码 发现短评存放在<span>标签里 ...
- python爬虫网站 词云_Python爬虫之爬取情话网站并绘制词云
一.爬取网站 1.分析目标网站 首先我们需要分析目标网站的源代码 分析html得知所有的情话都是在标签 下,而且一个 标签对应着一句情话. 2.编写代码 import bs4 import reque ...
- 爬取京东评论并生成词云
import os import time import json import randomimport jieba import requests import numpy as np from ...
- 实例:爬取豆瓣评论、绘制词云图以及情感分析——以《长津湖》为例
一.爬取豆瓣<长津湖>网页评论 (由于存在一定的反爬机制,以下代码最多只能爬取210条评论) # 导入工具包 import requests from bs4 import Beautif ...
- python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)
本文主要向大家介绍了[云计算]爬取淘宝手机品牌词云分析(python),通过具体的内容向大家展现,希望对大家学习云计算有所帮助. 淘宝手机信息的爬取,请看这边博客(点击这里),然后我们利用其中保存的文 ...
- 用python画苹果_Python爬取京东Iphone X用户评论并绘制词云
目标爬取京东商城上iPhone X用户评论数据: 使用jieba对评论数据进行分词处理: 使用wordcloud绘制词云图. 目前京东商城只会展示商品的前100页评论,所以我们能爬取到的评论只有100 ...
- Python爬取最近上映的电影评论并生成词云——误杀
前期准备 准备一张白底图片作为词云底板 说明:本代码爬取的是最近上映的电影,不同的日期运行此段代码可能会得到不同的结果 实现效果 代码实现 import warnings warnings.filte ...
- 爬取豆瓣短评并输出词云
说明: 爬取豆瓣电影,书籍,音乐(可选择)的所有短评信息,最终筛选出现频率最高的100词生成词云.但是我这个写的有点问题是,在挂代理ip测试时把豆瓣账号永久封禁,造成了电影短评无法全部获取,但书籍,和 ...
- 【数据分析大作业 爬虫+数据清洗+可视化分析】Python抓取视频评论并生成词云、情感指数柱状图、性别比例饼图及评论信息表格
目录 一些将BV号转化为AV号的变量设置 词云屏蔽词设置 使用代理IP(直接从IP网站复制的) 爬虫的函数 将结果写入表格中 下面是主函数,首先看看能不能抓取到,还有一些变量设置 开始循环爬评论 对一 ...
最新文章
- 初学Oracle的笔记(2)——基础内容(实时更新中..)
- 堆(heap)与栈(stack)的区别(一)
- python批量给文件命名为001,002,...【亲测有效】
- Tensorflow——[Could not load dynamic library cudart64_101.dll]解决方案
- mysql sql优化书籍_MySQL SQL优化的正确姿势
- (七)python3 只需3小时带你轻松入门——List与dict
- 华为触摸提示音怎么换_抖音苹果iPhone手机怎么改微信消息提示音 自定义换声音教程...
- ajax无法发送json串,如何使用$ .ajax发送JSON而不是查询字符串?
- 【嵌入式】Linux开发工具gdb及远程调试
- php ecdsa secp256k1,从上的压缩派生ECDSA未压缩公钥
- CT一般扫描参数_工业CT检测服务
- PAT乙级1085:PAT单位排行 (25)
- ANDROID_MARS学习笔记_S01原始版_009_下载文件
- 纯前端滑块拼图验证组件(多端兼容)
- iOS 应用崩溃日志分析
- windows使用批处理bat控制打印机自动打印测试页(可设置定时自动打印)
- Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能
- 【游戏开发进阶】Unity流体模拟,支持粒子系统,支持流体碰撞交互(Obi Fluid插件使用教程)
- CentOS 7安装并启动Google浏览器
- 获得淘系商品详情展示