爬虫学习——大碗宽面b站和网易云可视化分析代码

代码链接:https://github.com/Brucepk/Kris-noodles

一、哔哩哔哩弹幕

#bilibili-noodles.py
from bs4 import BeautifulSoup
import pandas as pd
import requests
url = 'http://comment.bilibili.com/87150521.xml'
html = requests.get(url).content
html_data = str(html, 'utf-8')
soup = BeautifulSoup(html_data, 'lxml')
results = soup.find_all('d')

comments = [comment.text for comment in results]
comments_dict = {'comments': comments}

df = pd.DataFrame(comments_dict)
df.to_csv('noodles.csv', encoding='utf-8')

str(html, ‘utf-8’) 可以转换编码

#bilibili-noodles-jieba
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba

df = pd.read_csv('noodles.csv', header=None)

text = ''
for line in df[1]:
    text += ' '.join(jieba.cut(line, cut_all=False))
backgroud_Image = plt.imread('Kris.jpg')

wc = WordCloud(background_color='white', mask=backgroud_Image, font_path='C:\Windows\Fonts\STXINGKA.TTF',
               max_words=2000, max_font_size=80, random_state=30,)
wc.generate_from_text(text)
# 看看词频高的有哪些,把无用信息去除
process_word = WordCloud.process_text(wc, text)
sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
print(sort[:50])
img_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func=img_colors)
plt.imshow(wc)
plt.axis('off')
wc.to_file("wyf.jpg")
print('生成词云成功!')

https://github.com/fxsjy/jieba

  • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用HMM 模型
  • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
  • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
  • jieba.cut 以及jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search直接返回 list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

backgroud_Image = plt.imread(‘Kris.jpg’)读取图片生成三维数组

wc = WordCloud(background_color=‘white’, mask=backgroud_Image,font_path=‘C:\Windows\Fonts\STXINGKA.TTF’,max_words=2000, max_font_size=80, random_state=30,)
mask图形,font_path字体,max_font_size显示的最小的字体大小,max_words要显示的词的最大个数,random_state : int or None为每个单词返回一个PIL颜色

猜你喜欢

转载自blog.csdn.net/yuandong_D/article/details/89483703