一、抓取小丑的豆瓣短评

网址:https://movie.douban.com/subject/27119724/reviews?start=20
首先构造url,短评页面每页可以抓取20个评论,假如我们需要抓取第20-40个评论,我们便可以构造url:https://movie.douban.com/subject/27119724/reviews?start=40,
以此类推我们可以抓取前3060个评论:


分别抓取了评论用户的名称、短评的内容,点赞数目以及用户链接
抓取内容保存为文本格式,
代码如下:

import csv
import requests
from lxml import etreeclass douban(object):def __init__(self,headers):self.url='https://movie.douban.com/subject/27119724/reviews?start={page}'self.headers=headerspassdef get_html(self,url):response=requests.get(url,headers=headers)html=etree.HTML(response.text)return htmldef get_comments(self,html):short_comments=html.xpath('//h2/a/text()')#短评return short_commentsdef get_names(self,html):names=html.xpath('//header/a[@class="name"]/text()')#用户姓名return namesdef get_thumbs(self,html):thumb_ups=html.xpath('//div[@class="action"]/a[@title="有用"]/span/text()')#点赞情况return thumb_upsdef get_userifo(self,html):name_urls=html.xpath('//header/a[@class="name"]/@href')#用户链接return name_urlsdef save_csv(self,d):with open('D:/douban.csv','a',encoding='utf-8',newline='') as f:writer=csv.writer(f)writer.writerow([d['名字'],d['评论'],d['点赞数目'],d['用户链接']])def save_txt(self,d):with open('D:/douban.txt','a',encoding='utf-8') as f:f.write(d['名字']+';'+d['评论']+';'+d['点赞数目']+';'+d['用户链接']+'\n')def main(self):for page in range(0,3041,20):url=self.url.format(page=page)print('开始爬取'+url)html=self.get_html(url)short_comments=self.get_comments(html)names=self.get_names(html)thumb_ups=self.get_thumbs(html)name_urls=self.get_userifo(html)d={'评论':short_comments,'名字':names,'点赞数目':thumb_ups,'用户链接':name_urls}for i in range(len(names)):d={}d={'评论':short_comments[i],'名字':names[i],'点赞数目':thumb_ups[i].strip('\n').strip(),'用户链接':name_urls[i]}self.save_txt(d)if __name__=='__main__':douban=douban(headers)douban.main()

用pandas进行读取后如下所示:

import pandas as pd
table=pd.read_table('D:/douban.txt',sep=';')
table.columns=['用户名','短评内容','点赞数目','用户链接']
table

二、对短评内容做词云图

1.制作停止词库:

因为我们在评论时会有很多的语气词、副词·等,对于我们展现词频热度是无意义的干扰词。

停止词库是从网上下载下来的,有近2000多个,我还向里面添加了小丑,观后感等词语:

def make_stopdict():stopdict = set()f = open("D:/stopwords.txt","r") #网上下载来的停止词文本,近2000个,可以自己往里面添加lines = f.readlines()for l in lines:stopdict.add(l.strip())f.close()return stopdict
stopdict = make_stopdict()

2.分词:

将一句完整的短评语句分解成一个个词语,我使用的jieba进行分词

import jieba
import rezhongwen_pat = re.compile(r'^[\u4e00-\u9fa5a-zA-Z]+$')#匹配中文、英文等
all_content = []
f = open("D:/douban_terms3.txt","w")
comments=table['短评内容']
for comment in comments: #tweets是从数据库中取出来的待制作词云图的文本源cut_list = [terms for terms in jieba.cut(comment) if zhongwen_pat.search(terms)]cut_set = set(cut_list)res_set = cut_set - stopdictres_list = list(res_set)all_content.extend(res_list)f.writelines(res_list)
f.close

分词之后的短评内容保存在了douban_terms3.txt文件中,格式如下所示:

3.提取关键词

使用的是 jieba.analyse.extract_tags来提取的关键词,关于提取 jieba.analyse.extract_tags的用法可以参照:https://blog.csdn.net/qq_40082282/article/details/103433612

import jieba.analysedef get_top_keywords(file):top_word=[]with open(file,'r') as f:texts=f.read()#读取文件为整个字符串result=jieba.analyse.extract_tags(texts,topK=400,withWeight=True)#保留400个关键字for r in result:top_word.append(r[0])return top_word
top_word=get_top_keywords('D:/douban_terms3.txt')

400个关键词如下所示:

4.绘制词云图

from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
import matplotlib.pyplot as plt
from os import pathdef draw_wordcloud(txt):#读入一个txt文件,基于此文本知错词云图color_mask = imread("D:/th.jpg") #读取背景图片,cloud = WordCloud(#设置字体,不指定就会出现乱码,文件名不支持中文font_path="D:/FZMiaoWuJW.TTF", #font_path=path.join(d,'simsun.ttc'),#设置背景色,默认为黑,可根据需要自定义为颜色background_color='white', #词云形状,mask=color_mask,#允许最大词汇max_words=400,#最大号字体,如果不指定则为图像高度max_font_size=50,#画布宽度和高度,如果设置了msak则不会生效width=800,height = 600,margin = 2,#词语水平摆放的频率,默认为0.9.即竖直摆放的频率为0.1prefer_horizontal = 0.8)wc = cloud.generate(','.join(top_word)) #产生词云,直接从字符串文本中产生词云图#wc = cloud.fit_words(txt) 跟以上是同一意思wc.to_file("D:/xiaochou_cloud.jpg") #保存图片#显示词云图片plt.imshow(wc)#不显示坐标轴plt.axis('off')#绘制词云#plt.figure(dpi = 600)image_colors = ImageColorGenerator(color_mask)#plt.imshow(wc.recolor(color_func=image_colors)) #重新上色,plt.show()
draw_wordcloud(top_word)

最后产生的词云图如下所示:

总结:做词云图共分四步:制作停止词库、分词、提取关键词、绘制词云图;基本用wordcloud和jieba就可以搞定。

爬取豆瓣《小丑》短评做词云图相关推荐

  1. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

    最近看了一部电影<绣春刀>,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字.用jieba分词,对词语的出现频率进行统计,再通过wordcloud生 ...

  2. 实例:爬取豆瓣评论、绘制词云图以及情感分析——以《长津湖》为例

    一.爬取豆瓣<长津湖>网页评论 (由于存在一定的反爬机制,以下代码最多只能爬取210条评论) # 导入工具包 import requests from bs4 import Beautif ...

  3. [转载]Python爬取豆瓣影评并生成词云图代码

    # -*- coding:utf-8 -*- ''' 抓取豆瓣电影某部电影的评论 这里以<我不是潘金莲为例> 网址链接:https://movie.douban.com/subject/2 ...

  4. 爬取豆瓣电影短评并使用词云简单分析top50

    先使用进程池爬取豆瓣电影短评 import requests import re import random import time import pandas as pd from pymongo ...

  5. 超细致通用,python爬取豆瓣游戏短评——以王者荣耀评论为例

    超细致通用,爬取豆瓣游戏短评--以王者荣耀评论为例 写在前面 一.介绍 二.步骤 1.观察 1.1网页结构 1.2网页层次逻辑 2.准备 2.1引入库 2.2获取html文件并且解析 3.选取 3.1 ...

  6. python爬虫豆瓣电影短评_【Python爬虫】BeautifulSoup爬取豆瓣电影短评

    目的:爬取豆瓣[红海行动]电影的首页短评 步骤: 1.使用BeautifulSoup解析网页 soup = BeautifulSoup(r, 'lxml') // lxml 库解析速度快,也能解析复杂 ...

  7. csv文件操作和爬虫抓取豆瓣影评并生成词云图

    1. csv文件操作 csv文件windows默认是excel打开的,是一种表格式文件 import csv #导入csv的库 # 一次写入多行文本时,会多换一行,可以设置newline=" ...

  8. Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图

    目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import jsonfrom PIL import Image from pyque ...

  9. python爬取豆瓣小组_Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图

    目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import json from PIL import Image from pyqu ...

最新文章

  1. 2020.12.17
  2. reactivecocoa基础讲解
  3. ChemBioDraw 制作DMT屏保
  4. LeetCode第 227 场周赛题解
  5. python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决
  6. EF sqlite3报错 System.Data.Entity.Core.EntityException: 在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。...
  7. Java——多线程使用详解
  8. 折正方体-------------给你出道题
  9. 数值积分方法的c语言实现,编程实现数值积分的几种--方法 c语言.doc
  10. 吴恩达深度学习课程第二章第三周编程作业(pytorch实现)
  11. zib机器人怎么_ZIB智伴机器人好不好 ZIB智伴机器人使用测评
  12. 中文ASCII码对照表
  13. 计算机是uefi启动 不能装win7,uefi+gpt分区安装win7图文教程 uefi加gpt模式安装win7 64位的方法...
  14. ictclas4j java_使用继续完善前人写的文章:使用ICTCLAS JAVA版(ictclas4j)进行中文分词...
  15. oracle安装后,电脑变得很卡,解决办法(安装的是oracle11g)
  16. 小米手机定价与《怪诞行为学》
  17. Realsense-Ros安装配置
  18. 如何让Win10电脑不更新呢
  19. 手机中使用到的SENSOR相关原理
  20. 用PS制作动态雪景的教程

热门文章

  1. 77、网络监控的视频码流、帧率、全双工、网口速率基础概念
  2. 释放数据生产力,数据治理要“即时”
  3. 从数据到知识,为何离不开这架飞轮?
  4. 光纤光栅钢结构监测应变传感器温度补偿分析
  5. freebsd 安装php,FreeBSD下安装PHP5
  6. redis学习(叁) -- 主从复制
  7. 计算机鼻祖-Donald Knuth(高德纳) 的传奇
  8. 人工智能AI在国内交通领域中的应用
  9. 尚硅谷Java入门视频教程第二章——Java基本语法
  10. 使用VUE对复选框进行选择