python10.28

星期一:

今天学习内容略微比较难,总结一句话就是领略了如何利用requests,发送请求,同时运用bs4里面BeautifuSoup(美丽的汤)处理爬取出来的内容,通过for循环吧内容通过弹幕(key)链接,并且利用pandas,转化成二维数列,在通过for以及re,通过一系列花里胡哨的操作,完成数据的爬取及写入TXT,接下来就是运用jieba(结巴)语句进行精确切割,分割之后通过空格“ ”.join()进行重组,通过WordCloud,进行处理后,通过generate生成,mathlotlib.pylot显示。

今天重复做了两次,第一次照搬照抄,虽然没什么错误,但是不明其理,第二次通过逻辑其实也看着(不然打不出来,脑子没东西),发现了四个错误点,今天就把错误的传上来吧,大家引以为戒!

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import jieba
from imageio import imread
from wordcloud import WordCloud
import matplotlib.pyplot as plt##错误点


header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
url = 'http://comment.bilibili.com/125849178.xml'
res = requests.get(url = url)
res.encoding = res.apparent_encoding##为什么
data = res.text
soup = BeautifulSoup(data,'lxml')
# print(soup)
# print(data)
d_list = soup.find_all('d')
dlst = []
for d in d_list:
    danmu ={}
    danmu['弹幕'] = d.text#如果直接赋值会怎么样?
    dlst.append(danmu)
    #弹幕字典每次都被增加和变为空值
#接下来要进行数据处理运用pandas
df = pd.DataFrame(dlst)#如果不进行这个操作可以么?对列表直接进行操作?
f = open('bi.txt','w',encoding='utf-8')#打开文档
for i in df['弹幕'].values:#取列表里边每个字典的的value值
    # print(i)
    pat = re.compile(r'[一-龥]+')#写出要求!!!!!!!!!正则表达式[]+
    filter_data = re.findall(pattern=pat,string=i)#这他妈是为什么这么写
    # print(filter_data)
    f.write("¥".join(filter_data))#写入
f.close()
"""

进行了爬取工作,并且写入了txt文件中
下一步:::让我想想想,云图,不对,分割,对,先分割,精确分割,之后用wordcloud弄出来,再利用,什么sp什么的显示出来,对

"""
f = open('bi.txt','r',encoding='utf-8')
data = f.read()
result = " ".join(jieba.lcut(data))##这里!!!join前边的引号内一定要加空格~~~!!!

print(result)#为什么没有分割开
f.close()

color_mask = imread('五角星.jpg')
wc = WordCloud(
    font_path=r'C:WindowsFontssimhei.ttf',
    width=1000,
    height=800,
    mask=color_mask,
    background_color='white'
)
wc.generate(result)
wc.to_file('jjj.jpg')
plt.imshow(wc)
plt.show()

  

原文地址:https://www.cnblogs.com/fxsm/p/11756077.html