利用Python分析文章词频,并生成词云图

使用request模块获取文章数据

import jieba
import requests
import csv
from bs4 import BeautifulSoup
import re# 字符集
r = '[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+'
# 文章链接:在中国日报网,选取了一篇新闻作为本次案例的分析
url = 'http://www.chinadaily.com.cn/a/202008/20/WS5f3db65da31083481726171e.html'  #英语新闻URL
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 QIHU 360SE'
}
response = requests.get(url=url, headers=headers)  #获取响应内容
print(response)  #<Response [200]>
<Response [200]>

使用BeautifulSoup模块解析所需的文章内容和词频统计

基本思路

  • 使用BeautifulSoup模块获取文章内容
  • 去除文章中的字符集
  • 消除大小写字母的影响
  • 把英文文章的每个单词放到列表里,并统计列表长度;
  • 遍历列表,对每个单词出现的次数进行统计,并将结果存储在字典中;
  • 求出每个单词出现的频率,并将结果存储在频率字典中;
  • 以字典键值对的“值”为标准,对字典进行排序,输出结果
# 转化为Beatifulsoup格式
bs = BeautifulSoup(response.text, 'html.parser')
print(type(bs))  #<class 'bs4.BeautifulSoup'>
# 提取数据
data = bs.find('div', class_='lft_art')
# 文章标题
title = data.find('h1').text
print(title)
# print(data.text)
# 获取文章内容
print(len('SONG CHEN/CHINA DAILY \n \n\n'))  #长度:26
# 删除不属于文章的内容:'SONG CHEN/CHINA DAILY \n \n\n'
text = data.find('div', id='Content').text.strip()[26:]
# print(text)# 替换特殊字符方法一
for ch in '[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+':text = text.replace(ch, ' ')
# print(text)# 替换特殊字符方法二,正则表达式re.sub()函数
text = re.sub(r'[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+', ' ', text)
# print(text)# 消除大写字母带来的影响
text = text.lower()
# print(text)
# 使用split方法切分文章
words_list = text.split()
# print(words_list)
# 新建counts列表用于存放各词出现的次数
counts = {}
# 统计各词出现的次数
for word in words_list:counts[word] = counts.get(word, 0) + 1#print(counts.get(word,0)+1)
# print(counts)
items = list(counts.items())  #转为列表格式
# 按降序进行排序
items.sort(key=lambda x: x[1], reverse=True)
# 显示出现次数最多的前15单词
print(items[0:15])
<class 'bs4.BeautifulSoup'>
Life as we know it has changed, possibly forever
26
[('the', 83), ('to', 65), ('of', 51), ('and', 39), ('in', 33), ('a', 33), ('said', 23), ('people', 21), ('that', 19), ('be', 18), ('for', 16), ('are', 15), ('from', 15), ('they', 15), ('have', 14)]

制作词云图

1、词云图 制作前,需要先准备几个东西:

(1)下载python wordcloud库,也是词图库制作的关键库;

(2)numpy库,用于图片处理,将图片读取后解析成数组;

(3)如果要对中文句子进行分词,那么需要jieba库;如果是英文分词,那可以不下载;

(4)如果要在界面上直接展示词云图 ,那么需要matlplotlib来画图;

(5)要处理图片,根据少不了PIL,毕竟它可是官方的图像处理库;

# 生成词云图
import matplotlib as plt
from wordcloud import wordcloud
from PIL import Image
import numpy as npcut_text = jieba.cut(text)
result = ' '.join(cut_text)
# print(result)
mask = np.array(Image.open('./运动.jpg')) #解析图片
wc = wordcloud.WordCloud(background_color='white',  # 背景颜色width=1000,height=600,max_font_size=50,  # 字体大小min_font_size=10,mask=mask,  # 背景图片max_words=1000)
wc.generate(result)
image = wc.to_image()
image.show()  # 显示词云
# 保存图片
wc.to_file('jiab_englist11.png')
<wordcloud.wordcloud.WordCloud at 0x1feb0c0f6d8>


利用Python分析文章词频,并生成词云图相关推荐

  1. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...

    问题描述: 如何利用python画出一个多变的词云图? 解决方法:import numpy as np import matplotlib import matplotlib.pyplot as pl ...

  2. 基于DataFrame结构的词频表生成词云图

    说明:基于DataFrame结构的词频表生成词云图 代码 from wordcloud import WordCloud import matplotlib.pyplot as pltfrequenc ...

  3. Python最简单的方法生成词云图

    用Python怎么生成词云图呢? 网上有很多教程,这里给大家介绍一种比较简单易懂的方式方法. 首先请自主下载worldcloud, jieba, imageio三个库. 如何有效下载详见:https: ...

  4. python爬取歌词并生成词云图

    第一部分:爬取数据 # 第一部分:爬取数据 import requests import re import os import json from bs4 import BeautifulSoup# ...

  5. 爬虫——爬取人民网数据生成词云图

    1.以人民网的新闻数据为例,简单介绍的利用python进行爬虫,并生成词云图的过程. 首先介绍python的requests库,它就好像是一个"爬手",负责到用户指定的网页上将所需 ...

  6. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  7. python image stiching_Python自然语言处理,词云图生成

    自然语言处理 本节介绍如何使用Python中的库,生成词云图,涉及自然语言处理的相关问题,自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的 ...

  8. python生成文章标题_利用简书首页文章标题数据生成词云

    原标题:利用简书首页文章标题数据生成词云 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! ...

  9. Python中文分析:《射雕英雄传》统计人物出场次数、生成词云图片文件、根据人物关系做社交关系网络和其他文本分析

    前言 python中文分析作业,将对<射雕英雄传>进行中文分析,统计人物出场次数.生成词云图片文件.根据人物关系做社交关系网络和其他文本分析等. 对应内容 1.中文分词,统计人物出场次数, ...

最新文章

  1. 【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件
  2. python自定义库文件路径
  3. ES6--函数的扩展
  4. 你需要了解操作系统发展历程
  5. 【Antlr】Antlr 将 CSV文件 转成Map数据结构
  6. linux之fail2ban之预防暴力破解
  7. 1008 数组元素右移k位
  8. 阶段3 1.Mybatis_11.Mybatis的缓存_6 Mybatis中的一级缓存
  9. java数组排序的方法_Java数组排序方法详解
  10. codeblock 添加 .lib 文件
  11. 大厂秋招~华为荣耀字节腾讯美团滴滴
  12. 《那些年啊,那些事——一个程序员的奋斗史》——07
  13. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover
  14. 亚马逊出单技巧 掌握财富密码
  15. Chrome下如何复制禁止复制网页上的文字
  16. 今日金融词汇--- 股权质押
  17. MySql安装配置(msi版)
  18. e71 A4输入法 技巧
  19. 天意u盘启动盘安装linux,(BIOS+UEFI双启WINPE)天意u盘维护系统技术员版V2.1
  20. 计算机程序必须装载哪,计算机程序必须装载到内存中才能执行

热门文章

  1. 对抗机器学习:Generating Adversarial Malware Examples for Black-box Attacks Based on GAN
  2. 信息流驱动百度App高位增长:日活和时长双双跑赢大盘
  3. 网页中QQ在线客服进行聊天的一些坑和解决方案
  4. python print函数
  5. 天气类APP产品微体验(墨迹天气、中央天气预报、雅虎天气、2345天气王)
  6. 开源摄影机:Axiom Camera
  7. Android应用跳转微信各种类型的总结记录
  8. Unity Inspector添加自定义按钮(Button)
  9. 手机直接安装linux系统6,手机直接安装linux系统
  10. 一名计科生的周总结(week 2)