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

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

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


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


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


目标网址

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

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

image.png

解析网址


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


image.png

我这里用到的一个使我们最为常用的一个解析库-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 然后回车,如图:

image.png

第三步:

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

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

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

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

image.png

写入文件

  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感觉很少用到,哈哈哈,我只想说一句“书到用时方恨少”

image.png

利用beautifulsoup爬取过程

image.png

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

分析数据

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

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

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

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

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

去除掉我们标点符号,最终按照我们的标准统计法对我们的词组进行统计

代码如下:

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')

得到本书中四字词语的出现最多的次数:

image.png

总结

1.爬取数据

2.存储数据

3.分析数据

最后我们利用词云图把这个可视化呈现给用户:

image.png

效果展示

20201023205426972.png20201023205457997.png

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


相关文章
|
17天前
|
Python
【python】爬楼梯—递归分析(超级详细)
【python】爬楼梯—递归分析(超级详细)
|
7天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
1天前
|
数据可视化 算法 数据挖掘
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
|
2天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
14 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
2天前
|
存储 机器学习/深度学习 数据可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
39 6
|
2天前
|
机器学习/深度学习 算法 数据可视化
python用支持向量机回归(SVR)模型分析用电量预测电力消费
python用支持向量机回归(SVR)模型分析用电量预测电力消费
25 7
|
2天前
|
机器学习/深度学习 数据可视化 算法
PYTHON用决策树分类预测糖尿病和可视化实例
PYTHON用决策树分类预测糖尿病和可视化实例
11 0
|
2天前
|
数据可视化 算法 Python
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
13 0
机器学习/深度学习 算法 Python
16 0
|
2天前
|
算法 数据可视化 Python
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
11 0