爬虫大作业 爬虫大作业

爬虫大作业

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.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。

猜你喜欢

转载自www.cnblogs.com/tiankongyiluozhiwu/p/8974198.html