词云的产生

假设我们现在要生成一个词云,我们首先需要一些文本文件才能根据文本生成词云。
第一步:获取文本信息(这里以某电影的前10页评论为例)

import threading    
import requests
from bs4 import  BeautifulSoup
# #      1). 爬取某一页的评论信息;
def getOnePageComment(id, pageNum):
    # 1). 根据页数确定start变量的值
    # 第一页: https://movie.douban.com/subject/26425063/comments?start=0&limit=20&sort=new_score&status=P
    # 第二页: https://movie.douban.com/subject/26425063/comments?start=20&limit=20&sort=new_score&status=P
    # 第三页: https://movie.douban.com/subject/26425063/comments?start=20&limit=40&sort=new_score&status=P
    start = (pageNum-1)*20
    url = "https://movie.douban.com/subject/%s/comments?start=%s&limit=20&sort=new_score&status=P" %(id, start)
    # 2). 爬取评论信息的网页内容
    content = requests.get(url).text
    # 3). 通过bs4分析网页
    soup = BeautifulSoup(content, 'lxml')
    # 分析网页得知, 所有的评论信息都是在span标签, 并且class为short;
    commentsList = soup.find_all('span', class_='short')
    pageComments = ""
    # 依次遍历每一个span标签, 获取标签里面的评论信息, 并将所有的评论信息存储到pageComments变量中;
    for commentTag in commentsList:
        pageComments += commentTag.text
    global  comments
    comments += pageComments


#      2).爬取某个电影的前10页评论信息;
id = '26425063'
comments = ''
threads = []
# 爬取前10页的评论信息;获取前几页就循环几次;
for pageNum in range(10): # 0 , 1 2 3 4...9
    pageNum = pageNum + 1
    # getOnePageComment(id, pageNum)
    # 通过启动多线程获取每页评论信息
    t = threading.Thread(target=getOnePageComment, args=(id, pageNum))
    threads.append(t)
    t.start()
#     等待所有的子线程执行结束, 再执行主线程内容;
_ = [thread.join() for thread in threads]
with open("%s.txt" %(id), 'w') as f:
    f.write(comments)

在这里插入图片描述

以上是我们获得的文本信息,但我们会发现有些东西是不需要的,例如:表情,标点符号等
所以我们要对数据进行筛选(数据清洗)

import re
import wordcloud
import jieba  ##这两个模块需要安装

# 1. 对于爬取的评论信息进行数据清洗(删除不必要的逗号, 句号, 表情, 只留下中文或者英文内容)
with open('./26425063.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:
    with open('l.txt','a+') as ff:
        ff.write(item)

词云的产生

猜你喜欢

转载自blog.csdn.net/forever_wen/article/details/83302429