《手牵手带你走进python世界》系列五

  import requests
  from bs4 import BeautifulSoup
  import datetime
  import pandas as pd
  import matplotlib.pyplot as plt
  import re
  import jieba
  import numpy as np
  from wordcloud import WordCloud, ImageColorGenerator

  url = "https://comment.bilibili.com/92542241.xml"
  r = requests.get(url)
  r.encoding = 'utf8'

  soup = BeautifulSoup(r.text,'lxml')
  d = soup.find_all('d')

  dlst = []
  n = 0
  for i in d:
      n += 1
      danmuku = {}
      danmuku['弹幕'] = i.text
      danmuku['网址'] = url
      danmuku['时间'] = datetime.date.today()
      dlst.append(danmuku)

  df = pd.DataFrame(dlst)

  with open('sign.txt','w',encoding='utf8') as f:
      for text in df['弹幕'].values:
          pattern = re.compile(r'[一-龥]+')
          filter_data = re.findall(pattern,text)
          f.write("".join(filter_data))

  with open('sign.txt', 'r', encoding='utf8') as f:
      data = f.read()
      segment = jieba.lcut(data)
      words_df = pd.DataFrame({"segment": segment})

  word_stat = words_df.groupby(by=['segment'])['segment'].agg({'计数':np.size})
  words_stat = word_stat.reset_index().sort_values(by=['计数'],ascending=False)

  wordcloud = WordCloud(
      font_path="/Library/Application Support/Apple/Fonts/iLife/BalegaRegular.otf",   # mac上没有该字体
      # font_path="C:\Windows\Fonts\simkai.ttf",
      # 设置字体可以显示中文
      background_color="white",  # 背景颜色
      max_words=3000,  # 词云显示的最大词数
      max_font_size=200,  # 字体最大值
      random_state=100,
      width=1000, height=860, margin=2,
      # 设置图片默认的大小,但是如果使用背景图片的话,                                                   # 那么保存的图片大小将会按照其大小保存,margin为词语边缘距离
  )

  # 生成词云, 可以用generate输入全部文本,也可以我们计算好词频后使用generate_from_frequencies函数
  word_frequence = {x[0]: x[1] for x in words_stat.head(500).values}
  word_frequence_dict = {}
  for key in word_frequence:
      word_frequence_dict[key] = word_frequence[key]

  wordcloud.generate_from_frequencies(word_frequence_dict)
  # 从背景图片生成颜色值
  # image_colors = ImageColorGenerator(color_mask)
  # 重新上色
  # wordcloud.recolor(color_func=image_colors)
  # 保存图片
  wordcloud.to_file('output.png')
  plt.imshow(wordcloud)
  plt.axis("off")
  plt.show()

原文地址:https://www.cnblogs.com/wuxiaoshi/p/11048761.html

时间: 2024-10-03 08:27:12

《手牵手带你走进python世界》系列五的相关文章

走进Python世界(五)数据类型 2. 字符串(String)

字符串String 使用引号定义的一组可以包含数字,字母,符号(非特殊系统符号)的集合. 如: Strval="This is a test!" Strval1='This is a test!' Strval2="""This is a test""" 三重引号(DocString) Python三重引号允许字符串跨越多行,包括逐字换行符,制表符和其他特殊字符. 三重引号语法由三个连续的单引号或双引号. #!/usr/bin

走进Python世界(五)数据类型 1.数字(Number)

数字类型 整型 长整型 浮点型 复数型 整型 整数int表示范围 -2^31  ~  2^31-1 长整型 整数long表示范围的范围很大很大,几乎涵盖任意的的整数. 为了区分int和long,需要在整数后面加L或者小写L. 如果超过整数范围而没有添加long的符号,python会隐式地转换成长整型 浮点型 带小数点的数字类型为浮点型 复数类型 我们在初等数学中所了解的那种复数, 分为实部和虚部 在python语言中,定义虚部用j来表示,如: c=3.14j

走进Python世界(五)数据类型 3. 序列类型-元祖(tuple)

什么是序列 列表,元组和字符串都是序列. 序列的两个主要特点是索引操作符和切片操作符 索引操作符让我们可以从序列中取一个值 切片操作符让我们能够获取序列的一个切片,即一部分序列 索引同样可以是负数,位置是从序列尾开始计算的 因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取的倒数第二个项目 切片操作符是序列名后跟一个方括号,方括号内有一对可选的数字,并用冒号分隔 注意冒号是必须的,数字是可选的 切片操作符中的第一个数表示开始位置,第二个数表示切片到哪里结束. 如果

走进Python世界(五)数据类型 5. 序列类型-字典(Dictionary)

什么是字典 字典是python中唯一的映射类型(哈希表) 字典是无序的 字典对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同的类型键值 keys() 或者values()返回键列表或者值列表 items()返回键值对的元组 创建字典 一般方法 常用的方式就是直接使用{} 一般语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 工厂方法 使用工厂方法dict来创建字典 一般语法如下: fdict=

走进Python世界(五)数据类型 3. 序列类型-列表(List)

什么是列表 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目 列表是可变的数据类型 列表的组成:用[]表示列表,包含了多个以逗号分隔开 数字,或者字符串. 列表的基本操作 列表是序列的一种,它也具有序列的基本操作 如: +,*,max,min等操作.此外 因为列表是可变的序列集合,它支持一些常见的 读写跟新操作 如: 操作 列子 描述 取值 list=['mileo',30,'maile'] list[0],list[0:2] 其实就是序列的切片和索引操作 添加 list

带你走进虚拟化世界之kvm(转载)

http://chuck.blog.51cto.com/10232880/1720953 带你走进虚拟化世界之kvm 2015-12-08 23:10:46 标签:云计算 虚拟化 kvm 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chuck.blog.51cto.com/10232880/1720953 一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算

带你走进虚拟化世界之KVM

带你走进虚拟化世界之KVM 一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1 云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2 在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)vps:虚拟专

小心公共wifi 之小白客带你走进黑客世界:kali linux下的无线攻击技术

本文标签: 黑客世界 wifi安全 无线攻击技术 公共wifi不安全 kali+linux 原文地址:http://whosmall.com/?post=460 我们常说公共wifi不安全,那么到底不安全在哪些地方呢?当不怀好意者和你同在一个wifi下,你的手机或者笔记本会被监听吗?除了上网被监视以外,还会产生什么不好的后果?介于小伙伴们对于wifi这一块比较感兴趣,在这篇文章里,就先为大家普及一下在公共wifi下究竟有多危险. 实验环境 一台装有kali linux的笔记本(模拟攻击者)ip地

大白话5分钟带你走进人工智能-第二十五节决策树系列之信息增益和信息增益率(4)

                                                       第二十五节决策树系列之信息增益和信息增益率(4) 上一节我们讲解了决策树的分裂条件以及评估纯度的其中一个方式,基尼系数.本节的话,我们再讲解一个评估纯度的方式,基于信息增益的方式,即ID3树使用的评估方式.它办的事跟Gini系数一样,也是评价纯度,但是它更客观一点,但它算起来比Gini系数稍慢一点,它办的事跟Gini系数一样,也是评价纯度,但是它更客观一点,算起来比Gini系数稍慢一点,