星期一:
今天学习内容略微比较难,总结一句话就是领略了如何利用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()