爬虫大作业
1.选一个自己感兴趣的主题。
2.用python 编写爬虫程序,从网络上爬取相关主题的数据。
3.对爬了的数据进行文本分析,生成词云。
4.对文本分析结果进行解释说明。
5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。
本次的大数据作业呢,是把我们爬取到的网页数据生成词云,在python中生成词云往往用到的就是使用 词云包wordcloud .
但是我们安装wordcloud的时候会遇到问题:
在Windows电脑终端使用pip install wordcloud并不能直接安装wordcloud
首先我们先来解决几个可能会遇到的问题:
我们在使用在cmd中使用pip install wordcloud总会出现如下面这种缺失东西情况:
这是我在网上看的安装教程:https://blog.csdn.net/th_num/article/details/77095075
https://blog.csdn.net/llx1026/article/details/77478895
首先查看自己的python版本
这时候需要读者前往一下链接http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud,在该链接下找到合适自己的wordcloud版本,下载到python安装目录下,然后打开电脑cmd终端,使用cd/d切换到wordcloud安装包文件夹下,在终端输入:pip install wordcloud-1.4.1-cp36-cp36m-win_amd64.whl
如果遇到pip版本的问题则需要先进行pip更新,之后再安装,如下图所示:
这样即可完成wordcloud安装!!!
安装完后你还需要在python-pycharm里setting。
以下是我利用上次爬取小说目录而弄的词云:
#coding=utf-8 #encoding=gbk from PIL import Image,ImageSequence import matplotlib.pyplot as plt import numpy as np import requests from bs4 import BeautifulSoup from wordcloud import WordCloud,ImageColorGenerator import re import jieba image=Image.open('./background.jpeg') graph = np.array(image) def getWordCloud(): Thecloud= str(open('keyword.txt', 'r', encoding='utf-8').read()) print(Thecloud) wc = WordCloud(font_path='./fonts/simhei.ttf',background_color='White',max_words=50,mask=graph) plt.imshow(wc) plt.axis('off') plt.show() def nextPage(newurl): newsId = re.search('//read.qidian.com/chapter/(.*)', newurl).group(1).split('/')[1] return newsId def getListPage(listPageUrl): #一页小说的信息 res = requests.get(listPageUrl) res.encoding = 'utf-8' soup = BeautifulSoup(res.text, 'html.parser') config_dic={} config_dic['书名:']=soup.select('.info.fl')[0].select('a')[0].text config_dic['作者:']=soup.select('.info.fl')[0].select('a')[1].text config_dic['章节标题:']= soup.select('.j_chapterName')[0].text config_dic['章节字数:']=soup.select('.j_chapterWordCut')[0].text config_dic['时间:']=soup.select('.j_updateTime')[0].text config_dic['下一页地址:']= soup.select('.chapter-control.dib-wrap')[0].select('a')[2].attrs['href'] return config_dic all_test = [] firstPage='https://read.qidian.com/chapter/KrpRa8cmGVT-JlVC31J8Aw2/lGUghgIS8dn4p8iEw--PPw2/' all_test.append(getListPage(firstPage)) url='https:'+all_test[0]['下一页地址:'] for i in range(1,30): # pageurl='https://read.qidian.com/chapter/KrpRa8cmGVT-JlVC31J8Aw2/{}'.format(c) new_test = getListPage(url) all_test.append(new_test) url = 'https:'+new_test['下一页地址:'] f = open('novel_text', 'a', encoding='utf-8') for i in all_test: print(i) t=str(i) f.write(t) f.close() all_uni=open('novel_text','r',encoding='utf-8') text=all_uni.read() wordlist=list(jieba.lcut(text)) #分解 Words={} #统计次数 for i in set(wordlist): Words[i]=wordlist.count(i) sort_word = sorted(Words.items(), key= lambda d:d[1], reverse = True) # 排序 h = open('keyword.txt', 'a', encoding='utf-8') for word in range(30): h.write(int(word)) h.close() delete_word=set(line.strip() for line in open('DeleteWord.txt')) for i in delete_word: #删除出现的过渡词 if i in Words: del Words[i] getWordCloud() # image= Image.open('./background.jpeg') # graph = np.array(image) # wc = WordCloud(font_path='./fonts/simhei.ttf',background_color='White',max_words=50,mask=graph) # wc.generate_from_frequencies(keywords) # image_color = ImageColorGenerator(graph) # plt.imshow(wc) # plt.imshow(wc.recolor(color_func=image_color)) # plt.axis("off") # plt.show()
还是出现了一些问题,有时间再修改。
1.选一个自己感兴趣的主题。
2.用python 编写爬虫程序,从网络上爬取相关主题的数据。
3.对爬了的数据进行文本分析,生成词云。
4.对文本分析结果进行解释说明。
5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。