开发者社区> 王小王-123> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Python爬取全网文字并词云分析(全程一键化!)

简介: Python爬取全网文字并词云分析(全程一键化!)
+关注继续查看

前景引入

最近Python很火,确实很火,好像一直都比较火,哈哈哈哈。如果你也觉得很火,那么就请看完这篇文章吧,看看Python的热度到底能不能使我这篇文章火起来。


那么作为后起之秀的编程语言——Python,它到底能够做些什么了,网上一直在“炒作”Python:一键化办公,学好Python薪资翻一番,让你的生活多一点money,让你的老板对你刮目相看,让你从此找到自信!这不是吹捧,也不是浮夸。从云计算、大数据到人工智能,Python无处不在,百度、阿里巴巴、腾讯等一系列大公司都在使用Python完成各种任务,让Python越来越接地气了,它的功能也不用我说了,它的优势和特点我也不再赘述了,毕竟本篇是一个技术文章,话不多说,开干!

如果你是科研党,请看完文章!文末有惊喜哟!

源码点击这里下载,直接可以运行

项目简介

近期收到CSDN上的小粉私信,说之前一篇文章文章Python爬取网站小说并可视化分析那个网站比较的好,说想要这个网站的所有书籍,自己拿去好好地研读。出于对粉丝的关心,再加上我个人也是比较喜欢文学作品的,无聊闲暇之余,看一本书陶冶一下自己的情操也不是不可的,哈哈哈。收到请求之后,我马上就开始架构思路了,我通过观察网页结构发现了它的特点,最后我加上自己的设计思路,增加词云分析这个功能,多次测试,最终达到了一键化!!!!!!!


项目思路与功能介绍

1.用户输入该网站里面的任何一本书籍的网页链接,输入储存路径回车即可,后台及运行爬虫,之后再去运行智能分词,最后利用强大的pyecharts库,来展示词云图

image.png

2.这么多的书籍,够你看了吧,如果你不想看,想知道这本书主要讲的是什么,出现哪些高频词,最终也会帮助你理解和了解这篇文章的主要内容。


3.本期项目依靠数据分析库和Python原生态的库,进行文本分词,智能切割,智能词云算法和智能爬虫算法,有反爬技术的书写,也有数据分析的亮点。


项目实现

1.首先你必须要安装好这几个库

/image.png

不会的请看这篇文章,有详细的介绍,要是看不懂我给你安装!绝对可以安装好的~

2.实现爬虫算法

提前定义好全局变量

from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
import jieba  # jieba用于分词,中文字典及其强大
from fake_useragent import UserAgent
import requests
from lxml import etree
import time
ll = []
lg = []
lk = []
lj = []
lp = []
li = []
d = {}  # 定义好相应的存储变量
def get_data(title,page,url,num):#title代表文件路径 page代表爬取的章节数 url为修订后网址 num为标签页数
    with open(r"{}.txt".format(title), "w", encoding="utf-8") as file:
        ua = UserAgent()  # 解决了我们平时自己设置伪装头的繁琐,此库自动为我们弹出一个可用的模拟浏览器

        def get_page(url):
            headers = {"User-Agent": ua.random}
            res = requests.get(url=url, headers=headers)
            res.encoding = 'GBK'
            html = res.text
            html_ = etree.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')

        for i in range(page):
            # time.sleep(2)
            file.write("第{}章".format(i + 1))#写入文本数据
            get_page(url+"{}.html".format(num + i))#爬虫标签页移动,数据输出爬取过程
            print("正在爬取第{}章!".format(i + 1))
        print("爬取完毕!!!!")

3.实现智能分词

我自己写了一个智能词云算法,包括各种小功能的实现,设计不易,拒绝白嫖哟,有需要的可以私信我或者自己下载!!!

4.主函数

def main():
    try:
        print("\t\t本小程序只针对:<https://www.cz2che.com/>网址有效,里面有大量的古今中外名著小说!!!\n\n")
        print("C:\\Users\\48125\\Desktop\\")
        title = input("请输入储存文本的路径及名称如桌面:(C:\\Users\\48125\\Desktop\\文本)不需要加.txt!\n")
        urll  = str(input("请输入您要爬取的网站(请将键盘光标移动到网址前面在回车!):"))
        url   = str(urll[:urll.rindex('/') + 1])
        num   = int(urll[urll.rindex('/') + 1:len(urll) - 5])
        print(url,num)
        page  = int(input("请输入本次您要爬取的章节数:\n"))
        get_data(title,page,url,num)
        Open(title)
        print("\n分词完毕!")
        print('''\n\n\t\t一键词云算法生成器
        \t0--退出词云系统
        \t1--生成一词组的词云图
        \t2--生成二词组的词云图
        \t3--生成三词组的词云图
        \t4--生成四词组的词云图
        \t5--生成大于1词组的词云图(研究常用)
        \t6--生成全部词组的词云图(包含所有类型的词组)
        ''')
        num = int(input("请输入本次展示的词语数量(最好不超过100):"))
        data = sort()[:num]
        Str = input("请输入这个词云图的标题:")
        print("词云图已经生成完毕,请查收!")
        print("感谢您对本程序的使用,欢迎下次光临!!")
        c = (
            WordCloud()
                .add(
                "",
                data,  # 数据集
                word_size_range=[20, 100],  # 单词字体大小范围
                shape=SymbolType.DIAMOND)  # 词云图轮廓,有以下的轮廓选择,但是对于这个版本的好像只有在提示里面选
                # circl,cardioid,diamond,triangle-forward,triangle,start,pentagon
                .set_global_opts(title_opts=opts.TitleOpts(title="{}".format(Str)),
                                 toolbox_opts=opts.ToolboxOpts())  # 工具选项
                .render("{}词云制作{}词组.html".format(title, choice))
        )
        return c
    except:
        print("无法找到,请检查你的输入!")

项目实现

1.输入网址和保存路径,以及爬取的章节数

20201229221935365.png

2.智能爬虫开启运行

20201229222215385.png

image.png

3.智能算法开启

image.png

image.png

4.效果展示

桌面自动出现,点击网页HTML即可展示词云,还可以自己下载,这就是pyecharts库的特点

20201229223217704.png

20201229223346481.png

20201229223411462.png

看起来还不错吧,我也觉得效果还可以,主要是这个一键化太让我省心了,以后还可以做知网上面的,帮助科研人员做科研方面的研究,还有各个电商网站的评论,来解决老板对商品的评估,这样的一键化可以帮助我们减少浪费的时间,当然老板也会喜欢的。


源码私信我!!!!设计着实不易!!!


项目拓展

我还自己设计另一个国家社科基金数据库的词云一键化分析

科研宝宝的最爱,有需要的可以直接私信我哟,把握好大家的研究方向才是开始最正确的选择

image.png

这个程序涉及到一个网页解码和转码的功能

2020122922453634.png

2020122922461091.png

20201229224644998.png

20201229224701555.png

里面的输入类别都可以自己设计的,所有的输入框都可以自己设置筛选条件!!!!

如果你是科研党,不要它可惜了,哈哈哈哈!!!!!!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Seata-微服务架构开发的必备利器
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式务服务,于 2019 年 1 月正式开源。 目前有四种事务模式,分别是 AT 事务模式(阿里独创)、 TCC事务模式、XA 事务模式以及 Saga 事务模式,基本囊括了市面上大部分事务模式,可以成为是一个一站式的分布式事务解决方案。
107 0
2022物联网创新应用大赛 等你来战!
“智物智造杯”物联网创新应用大赛开启!
156 0
阿里云架构师梁旭:MES on 云盒,助力客户快速构建数字工厂
四大优势:一站式交付、业务低延时、数据本地驻留、多工厂统一运维
164 0
Vue常用组件库的比较分析(pc端)
Vue常用组件库的比较分析(pc端)
113 0
5月25日,阿里云开源 PolarDB-X 将迎来重磅升级发布
2022年5月25日,阿里云开源 PolarDB-X 将升级发布新版本!
133 0
提速360倍!助力南方电网实现“仿真自由”
近日,为满足新型电力系统建设和运行面临的海量仿真需求,南方电网电力调度控制中心率先将电力仿真软件上云。在基于与阿里云共建的南网调度云平台上,仿真计算提速360倍,有效解决了传统硬件上电力仿真软件“跑不动”的问题,进一步保障电网安全稳定运行。
377 0
Kubernetes官方java客户端之七:patch操作
长文,助您通过java客户端对k8s进行各种patch操作
144 0
【spring源码解析】bean的一生
【spring源码解析】bean的一生
70 0
阿里云服务器购买教程以及入门基础教程汇总
很多第一次接触云计算的小白不懂如何购买阿里云服务器,不清楚该如何选购云服务器配置才能满足业务需求,为此笔者整理购买阿里云服务器教程(小白篇),希望能在选购云服务器配置上能帮助到大家!
293 0
+关注
王小王-123
快乐代码,精彩人生!
268
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载