用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示

最近很想看的一个电影,去知乎上看一下评论,刚好在学Python爬虫,就做个小实例。

代码基于第三方修改 原文链接  http://python.jobbole.com/88325/#comment-94754

#coding:utf-8
from lib2to3.pgen2.grammar import line

__author__ = ‘hang‘

import warnings
warnings.filterwarnings("ignore")
import jieba    #分词包
import numpy    #numpy计算包
import re
import pandas as pd
import matplotlib.pyplot as plt
import urllib2
from bs4 import BeautifulSoup as bs
import matplotlib
matplotlib.rcParams[‘figure.figsize‘] = (10.0, 5.0)
from wordcloud import WordCloud#词云包

#分析网页函数
def getNowPlayingMovie_list():
    resp = urllib2.urlopen(‘https://movie.douban.com/nowplaying/hangzhou/‘)
    html_data = resp.read().decode(‘utf-8‘)
    soup = bs(html_data, ‘html.parser‘)
    nowplaying_movie = soup.find_all(‘div‘, id=‘nowplaying‘)
    nowplaying_movie_list = nowplaying_movie[0].find_all(‘li‘, class_=‘list-item‘)
    nowplaying_list = []
    for item in nowplaying_movie_list:
        nowplaying_dict = {}
        nowplaying_dict[‘id‘] = item[‘data-subject‘]
        for tag_img_item in item.find_all(‘img‘):
            nowplaying_dict[‘name‘] = tag_img_item[‘alt‘]
            nowplaying_list.append(nowplaying_dict)
    return nowplaying_list

#爬取评论函数
def getCommentsById(movieId, pageNum):
    eachCommentStr = ‘‘
    if pageNum>0:
         start = (pageNum-1) * 20
    else:
        return False
    requrl = ‘https://movie.douban.com/subject/‘ + movieId + ‘/comments‘ +‘?‘ +‘start=‘ + str(start) + ‘&limit=20‘
    print(requrl)
    resp = urllib2.urlopen(requrl)
    html_data = resp.read()
    soup = bs(html_data, ‘html.parser‘)
    comment_div_lits = soup.find_all(‘div‘, class_=‘comment‘)
    for item in comment_div_lits:
        if item.find_all(‘p‘)[0].string is not None:
            eachCommentStr+=item.find_all(‘p‘)[0].string
    return eachCommentStr.strip()

def main():
    #循环获取第一个电影的前10页评论
    commentStr = ‘‘
    NowPlayingMovie_list = getNowPlayingMovie_list()
    for i in range(10):
        num = i + 1
        commentList_temp = getCommentsById(NowPlayingMovie_list[0][‘id‘], num)
        commentStr+=commentList_temp.strip()

    #print comments
    cleaned_comments = re.sub("[\s+\.\!\/_,$%^*(+\"\‘)]+|[+——()?【】《》<>,“”!,...。?、[email protected]#¥%……&*()]+", "",commentStr)
    print cleaned_comments
    #使用结巴分词进行中文分词

    segment = jieba.lcut(cleaned_comments)
    words_df=pd.DataFrame({‘segment‘:segment})

    #去掉停用词
    stopwords=pd.read_csv("D:\pycode\stopwords.txt",index_col=False,quoting=3,sep="\t",names=[‘stopword‘], encoding=‘utf-8‘)#quoting=3全不引用
    words_df=words_df[~words_df.segment.isin(stopwords.stopword)]

    print words_df
    #统计词频
    words_stat=words_df.groupby(by=[‘segment‘])[‘segment‘].agg({"计数":numpy.size})
    words_stat=words_stat.reset_index().sort_values(by=["计数"],ascending=False)

    #用词云进行显示
    wordcloud=WordCloud(font_path="D:\pycode\simhei.ttf",background_color="white",max_font_size=80)
    word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}

    word_frequence_list = []
    for key in word_frequence:
        temp = (key,word_frequence[key])
        word_frequence_list.append(temp)

    wordcloud = wordcloud.fit_words(dict(word_frequence_list))
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()

#主函数
main()

时间: 2024-11-05 06:11:18

用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示的相关文章

python爬虫,爬豆瓣top250电影

python爬虫,爬豆瓣top250电影 import string import re import urllib2 class DouBanSpider(object) : def __init__(self) : self.page = 1 self.cur_url = "http://movie.douban.com/top250?start={page}&filter=&type=" self.datas = [] self._top_num = 1 def

python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://movie.douban.com/subject/26752088/comments?start=0&limit=20&sort=new_score&status=P 第二页url https://movie.douban.com/subject/26752088/comments?sta

用Python词云展示周董唱过的歌,发现内含秘密

马上开始了,你准备好了么 准备工作 环境:Windows + Python3.6 IDE:根据个人喜好,自行选择 模块: Matplotlib是一个 Python 的 2D数学绘图库 1 pip install matplotlib 2 import matplotlib.pyplot as plt jieba中文分词库 1 pip install jieba 2 import jieba wordcloud词云库 1 pip install wordcloud 2 from wordcloud

Python爬虫之豆瓣-新书速递-图书解析

1- 问题描述 抓取豆瓣“新书速递”[1]页面下图书信息(包括书名,作者,简介,url),将结果重定向到txt文本文件下. 2- 思路分析[2] Step1 读取HTML Step2 Xpath遍历元素和属性 3- 使用工具 Python,lxml模块,requests模块 4- 程序实现 1 # -*- coding: utf-8 -*- 2 from lxml import html 3 import requests 4 5 6 page = requests.get('http://bo

python爬虫获取豆瓣网前250部电影的详细信息

网址 https://movie.douban.com/top250 一共250部电影,有分页,获取每一部的详细信息 不采用框架,使用 urilib读取网页,re进行正则表达式匹配,lxml进行xpath查找 1 from film import * 2 from urllib import request 3 import time,re 4 url=r'https://movie.douban.com/top250?start=' 5 for i in range(10): 6 url=ur

python爬虫之一---------豆瓣妹子图

1 #-*- coding:utf-8 -*- 2 __author__ = "carry" 3 import urllib 4 import urllib2 5 from bs4 import BeautifulSoup 6 7 8 url = 'http://www.dbmeinv.com/?pager_offset=1' 9 x = 1 10 def crawl(url): 11 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6

爬虫之豆瓣图书评论词云

from urllib import request from bs4 import BeautifulSoup as bs import re import codecs import jieba #分词包 import numpy #numpy计算包 import pandas as pd #分词用到 import matplotlib.pyplot as plt #绘图包 import matplotlib matplotlib.rcParams['figure.figsize'] = (

python 生成18年写过的博客词云

文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开始的难以下手,到现在成为一种习惯,虽然每次写都会一字一句斟酌,但是每次看到产出,内心还是开心的,享受这样的过程. 这篇文章就是用python 生成自己写的博客词云,平常写的博客都是markdown 格式的,直接把文件传到后台,前端用js去解析文件显示的,所以我这里处理数据就不需要去爬虫网站,直接读文

Python给小说做词云

闲暇时间喜欢看小说,就想着给小说做词云,展示小说的主要内容.开发语言是Python,主要用到的库有wordcloud.jieba.scipy.代码很简单,首先用jieba.cut()函数做分词,生成以空格分割的字符串,然后新建WordCloud类,保存为图片. 1 #coding:utf-8 2 import sys 3 import jieba 4 import matplotlib.pyplot as plt 5 from wordcloud import WordCloud,ImageCo