Python爬取网站小说并可视化分析

时间荏苒,岁月不居,看过四处风景,唯独钟爱,路遥先生的那一句话“人之所以痛苦,在于追求错误的东西,如果你不给自己烦恼,别人也永远不可能给你烦恼”,生活正是如此,一切过多的在意都是自己的想法,有时候就需要活的洒脱一点,学会看淡一点,多看点书,人自然也就变得开明了,事物也就自然看的透彻一点。

读书破万卷、下笔如有神,书中自有黄金屋,书中自有颜如玉,腹有诗书气自华…中国是诗的国度,更是书籍文化的摇篮,书本最是可以提升一个人的气度。那么今天我们就来做一个项目,我把我最喜欢的《人生》这本书数据爬取下来,做一个简单的数据分析,找出一些特点。

话不多述我们开始步入正轨吧!

目标网址

https://www.cz2che.com/0/175/7710.html

这个网站收集了很多优秀书籍,还有诗词典故,中外名著,在里面你可以找到属于你自己的那一本书,静静的的享受文字的魅力…

在这里插入图片描述
解析网址

我们爬取的时候首先必须要搭建自己框架,至于有些网站它会有一些反爬技术,有一些内容会被加密,那么我们去解析的时候要根据网站的特点去解密,收集数据,不断的去测试,反复的优化我们的代码,这样才能达到一定的效果。本次的代码设计具有可移植的效果,只是有些文本需要自己的去按照正则表达式或Xpath或beautifulsoup这些解析方法来匹配数据。

在这里插入图片描述
我这里用到的一个使我们最为常用的一个解析库-Xpath,它具有简单,易懂的特点,但是对于有一些动态的网站,那么就有一点棘手了,这个时候我们要根据自己的目标网址来选取。

好了前期工作我们都准备好了,那么我们现在就要按照我们爬虫的思路开始吧!

请求网址

 headers = {
    
    
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
        }
        res=requests.get(url=url,headers=headers)
        # print(res.encoding)
        res.encoding='GBK'
        html=res.text
        # print(html)
        html_=etree.HTML(html)
        # print(html_)
        text=html_.xpath('//div[@class="panel-body content-body content-ext"]//text()')
        # text.remove("    ")

爬虫不可缺少的:
第一步:
伪装头,伪装pycharm成为浏览器,去请求网址内容,利用headers做一个参数
第二步:
编码格式,是要知道这个网址的编码是什么,这个是我们有时候最为忽视的一步,那么我们如何知道这个网址的编码是什么呢?
在console控制台输入document.charset 然后回车,如图:

扫描二维码关注公众号,回复: 12165304 查看本文章

在这里插入图片描述
第三步:
解析网址,我们最为常用的就是,Xlxm这个库,首先返回这个网址的源码的文本格式,然后我们利用html_=etree.HTML(html),html就是文本参数,我们解析把这个网页的源码解析好之后,就开始匹配数据了。

仅作为参考,网页时刻在发生变化

text=html_.xpath('//div[@class="panel-body content-body content-ext"]//text()')

这个每次返回的是一个列表,我们根据段落的特点把数据存储下来,那么我们的爬取数据就简单的完成了。

在这里插入图片描述
写入文件

  num=len(text)
        for s in range(num):
            file.write(text[s]+'\n')

这里按照段落特点写入到我们的txt格式里面。当然这里我们只是爬取了第一章,那么我们如何爬取整本书,就需要对网页做进一步的分析了,我们观察发现,我们第一章和第二章网址差别就是里面的某一个参数发生了改变:

https://www.cz2che.com/0/175/7713.html
https://www.cz2che.com/0/175/7714.html

那么这样就比较方便了,我们每次循环请求的时候,只需要改变这一个参数即可,我们利用format来解决这个,之前有童鞋问道format感觉很少用到,哈哈哈,我只想说一句“书到用时方恨少”

在这里插入图片描述

利用beautifulsoup爬取过程

在这里插入图片描述

现在我们完全爬取结束了!!

分析数据

获取到了一本书的数据,我们最先想到的就是我们利用jieba库进行中文分词,最后去统计文章里面出现的词组频次,最后排序输出,生成词云图,达到可视化的要求。

那么下面我们就开始读取数据,分词,统计,可视化了…

    a=file.read()
    b=jieba.lcut(a)

至于jieba库我们经常用到的就是这一个语法知识,对于jieba库的操作,我们的计算机二级也是有一定的要求和了解的。

那么我们如何去除掉文章里面的大量的标点符号,我们就需要利用到for循环的in操作;

在这里插入图片描述
去除掉我们标点符号,最终按照我们的标准统计法对我们的词组进行统计

代码如下:

with open(r"人生.txt", encoding="utf-8") as file:
    a=file.read()
    b=jieba.lcut(a)
    for x in b:
        if x in ",。、;:‘’“”【】《》?、.!… ":
            continue
        else:
            if len(x)==1:
                ll.append(x)
            elif len(x)==2:
                lg.append(x)
            elif len(x)==3:
                lk.append(x)
            else:
                lj.append(x)
    with open(r"数据分析.txt", "w", encoding="utf-8") as f:
        for word in lj:#如果想要统计其他字符长度的,只需要换一个变量即可
            d[word] = d.get(word, 0) + 1
        ls = list(d.items())
        ls.sort(key=lambda x: x[1], reverse=True)
        for i in range(10):
            print(ls[i][0])
        for a in ls:
            # new_word=a[0] +' '+str(a[1])
            new_word=a[0]
            f.write(new_word+'\n')

得到本书中四字词语的出现最多的次数:
在这里插入图片描述
总结

1.爬取数据
2.存储数据
3.分析数据
最后我们利用词云图把这个可视化呈现给用户:
在这里插入图片描述

效果展示

在这里插入图片描述
在这里插入图片描述

本次爬取的代码具有可移植性,对该网站的所有书籍都可行,本文只提供思路,需要源码的可以私信我!

每文一语

每一次的学习和积累都是最好的安排,不要抱怨美好为何迟迟不到,只要坚持,美好总是与你不期而遇!

猜你喜欢

转载自blog.csdn.net/weixin_47723732/article/details/109248600