1.选一个自己感兴趣的主题。
2.网络上爬取相关的数据。
3.进行文本分析,生成词云。
4.对文本分析结果解释说明。
5.写一篇完整的博客,附上源代码、数据爬取及分析结果,形成一个可展示的成果。
大作业细节:
python环境:3.6
爬取得网页:http://bbs.lol.qq.com/forum.php?mod=forumdisplay&fid=196&page=1
爬取的内容:
爬取每个帖子里每个用户发表的内容
爬虫代码:
# coding: utf-8 # In[24]: import urllib.request as ur output=open('C:\\Users\\ELsky\\Desktop\\aa.txt','a') import re # In[2]: url='http://bbs.lol.qq.com/forum.php?mod=forumdisplay&fid=196&page=1' # In[4]: html=ur.urlopen(url).read().decode('utf-8','ignore') # In[5]: from bs4 import BeautifulSoup # In[7]: soup=BeautifulSoup(html,'html.parser') # In[8]: li=soup.select('table[summary="forum_196"] tbody') # In[25]: for i in range(len(li)): if(i%2==0): continue else: try: myurl=li[i].select('a[title="新窗口打开"]')[0].attrs['href'] except: continue url1='http://bbs.lol.qq.com/'+myurl req=ur.Request(url1,headers={"user-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}) html1=ur.urlopen(req).read().decode('utf-8') soup1=BeautifulSoup(html1,'html.parser') content=re.sub('\s+','',soup1.select('div[class="pct"]')[0].get_text()) output.write(content+'\n') print(content) print('----') output.close()
分词+词云
# coding: utf-8 # In[12]: import re import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud file=open('C:\\Users\\ELsky\\Desktop\\aa.txt','r').readlines() # In[15]: data='' for i in file: data+=' '.join(jieba.cut(i))+' ' # break my_wordcloud = WordCloud(font_path='C:\\Windows\\Boot\\Fonts\\simhei').generate(data) plt.imshow(my_wordcloud) plt.axis("off") plt.show() # In[8]:
词云图