爬虫大作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫大作业相关的知识,希望对你有一定的参考价值。
1.选一个自己感兴趣的主题(所有人不能雷同)。
我选择了我们学校的新闻网来爬取数据,主要是通过获取文本然后结巴来分析
2.用python 编写爬虫程序,从网络上爬取相关主题的数据。
def getNewDetail(newUrl): resd=requests.get(newUrl) resd.encoding="utf-8" soupd=BeautifulSoup(resd.text,"html.parser") news={} news[\'title\']=soupd.select(".show-title")[0].text info=soupd.select(".show-info")[0].text news[\'dt\']=datetime.strptime(info.lstrip("发布时间:")[0:19],"%Y-%m-%d %H:%M:%S") if info.find("来源")>0: news[\'source\']=info[info.find("来源:"):].split()[0].lstrip("来源:") else: news[\'source\']="none" content=soupd.select(".show-content")[0].text news[\'content\']=soupd.select(".show-content")[0].text.split() f=open(\'gzccnews.txt\',\'a\',encoding="utf-8") f.write(content) f.close() news[\'click\']=int(getClickCount(newUrl)) news[\'newUrl\'] = newUrl countdict[news[\'source\']]=news[\'click\'] return news
打开广州商学院的网址进入到校园的新闻网。然后通过对每一页的来获取信息。
3.对爬了的数据进行文本分析,生成词云。
首先通过结巴把信息存在一个TXT文件下。
4.生成词云:
#coding:utf-8 import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS from wordcloud import WordCloud import jieba import numpy as np from PIL import Image #读入背景图片 abel_mask = np.array(Image.open("filepath")) #读取要生成词云的文件 text_from_file_with_apath = open(\'filepath\').read() #通过jieba分词进行分词并通过空格分隔 wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True) wl_space_split = " ".join(wordlist_after_jieba) my_wordcloud = WordCloud().generate(wl_space_split) my_wordcloud = WordCloud( background_color=\'white\', # 设置背景颜色 mask = abel_mask, # 设置背景图片 max_words = 200, # 设置最大现实的字数 stopwords = STOPWORDS, # 设置停用词 font_path = \'C:/Users/Windows/fonts/simkai.ttf\', max_font_size =50, random_state = 30, # 设置有多少种随机生成状态,即有多少种配色方案 scale=.5, ).generate(wl_space_split) # 根据图片生成词云颜色 image_colors = ImageColorGenerator(abel_mask) #my_wordcloud.recolor(color_func=image_colors) # 以下代码显示图片 plt.imshow(my_wordcloud) plt.axis("off") plt.show()
生成的词云:
4.对文本分析结果进行解释说明。
答:文本获取到的字符信息并不是我们想要的效果,因此,为了达到我们想要的效果,我就将所获取到的文本信息,生成一个词云图,这样我们就可以比较直观地看出,广州商学院的新闻网地信息主要在强调些什么,从而达到此次爬取的目的。
5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。
答:对于这个大作业,遇到以下问题:
第一,在爬取过程中,遇到的最大的问题就是在那个获取页面的总页数上,通过以前老师课堂上教过的知识,顺利解决了。
第二,第二个问题就是在安装生成词云的时导入有错误
后来选择合适的版本即:cp-36-cp-36m-win32.whl版本的来下载,cp指的是系统上安装的python版本,32表示安装的python版本是32位,不是操作系统
打开cmd运行,切换到指定目录运行
执行以下命令
1
2
|
pip install wordcloud - 1.3 . 3 - cp36 - cp36m - win32.whl pip install wordcloud |
最后就安装成功了。
6.最后提交爬取的全部数据、爬虫及数据分析源代码。
import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud, ImageColorGenerator import codecs import numpy as np from PIL import Image import re file = codecs.open(\'gzccnews.txt\', \'r\', \'utf-8\') image = np.array(Image.open(\'./a.jpg\')) font = r\'C:\\Windows\\Fonts\\simkai.ttf\' word = file.read() # 去掉英文,保留中文 resultword = re.sub("[A-Za-z0-9\\[\\`\\~\\!\\@\\#\\$\\^\\&\\*\\(\\)\\=\\|\\{\\}\\\'\\:\\;\\\'\\,\\[\\]\\.\\<\\>\\/\\?\\~\\!\\@\\#\\\\\\&\\*\\%]", "", word) wordlist_after_jieba = jieba.cut(resultword, cut_all=True) wl_space_split = " ".join(wordlist_after_jieba) print(wl_space_split) my_wordcloud = WordCloud(font_path=font, mask=image, background_color=\'black\', max_words=100, max_font_size=300, random_state=50).generate(wl_space_split) # 根据图片生成词云 iamge_colors = ImageColorGenerator(image) my_wordcloud.recolor(color_func=iamge_colors) # 显示生成的词云 plt.imshow(my_wordcloud) plt.axis("off") plt.show()
总结:熟能生巧,以后还是得多练习呀
以上是关于爬虫大作业的主要内容,如果未能解决你的问题,请参考以下文章
HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段
Python大作业——爬虫+可视化+数据分析+数据库(可视化篇)