爬取全本小说内容并进行文本分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬取全本小说内容并进行文本分析相关的知识,希望对你有一定的参考价值。
1.选一个自己感兴趣的主题。
我选择的主题是小说网站的爬取,所选文本是青云直上小说,程序也可用于爬取网站其他小说
2.网络上爬取相关的数据。
from bs4 import BeautifulSoup import requests #获取小说各章节的网页地址 def get_urls(): req = requests.get(url = aim) html = req.text div_bf = BeautifulSoup(html) div = div_bf.find_all(‘div‘, class_ = ‘listmain‘) a_bf = BeautifulSoup(str(div[0])) a = a_bf.find_all(‘a‘) nums = len(a[15:]) #删除开头重复章节 for each in a[15:]: names.append(each.string) urls.append(main + each.get(‘href‘)) return nums #保存小说到本地 def writer(name, path, text): write_flag = True with open(path, ‘a‘, encoding=‘utf-8‘) as f: f.write(name + ‘\\n‘) f.writelines(text) f.write(‘\\n\\n‘) #获取小说内容 def get_contents(target): req = requests.get(url = target) html = req.text bf = BeautifulSoup(html) texts = bf.find_all(‘div‘, class_ = ‘showtxt‘) texts = texts[0].text.replace(‘\\xa0‘*8,‘\\n\\n‘) return texts main = ‘http://www.biqukan.com/‘ aim = ‘http://www.biqukan.com/30_30398/‘ names = [] #章节名 urls = [] #章节链接 nums = get_urls() #章节数 print(‘小说开始下载:‘) for i in range(nums): writer(names[i], ‘小说.txt‘, get_contents(urls[i])) print(‘小说下载完成‘)
结果为:
下载到txt文档中,完成小说全本爬取
3.进行文本分析,生成词云。
import re import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud file=open(‘I:\\\\大四\\\\python\\\\大作业\\\\小说.txt‘,‘r‘,encoding=‘utf-8‘).readlines() data=‘‘ for i in file: data+=‘ ‘.join(jieba.cut(i))+‘ ‘ my_wordcloud = WordCloud(font_path=‘I:\\\\大四\\\\python\\\\py5\\\\msyh.ttf‘).generate(data) plt.imshow(my_wordcloud) plt.axis("off") plt.show() my_wordcloud.to_file(path.join("小说.png"))
4.对文本分析结果解释说明。
此显示的是文中最频繁出现的词汇,体现了文章的大意,也可以分析出作者写文章的风格和方向。
在本文中可以看出出现了一个人名,可以猜测是男主人公,而出现我们他们可以推测是作者喜欢树立正反派概念制作刺激,并有但是转折来提升刺激,还有现在等多频词提高紧张度,但从文中出现的其他词语的含义可以看出作者写作水平并不高明,当然这只是推测,因为我也没看过。
以上就是词频分析结果。
5.以上为所展示成果
以上是关于爬取全本小说内容并进行文本分析的主要内容,如果未能解决你的问题,请参考以下文章