【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化)

这篇具有很好参考价值的文章主要介绍了【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,标价10-20每份,如有需要请加文章最下方QQ。

本文资源:https://download.csdn.net/download/weixin_47040861/89149396


1.题目要求

题目描述:

爬取“纵横中文网”
1.利用爬虫技术爬取完整的一千条数据.
2.将爬取到的数据保件存到MySQL数据库中
3.利用python web 任意框架做后台api
4.利用js等技术动态渲染到HTML中
5.最少要有4个子页面
6.每个页面最少3个版块
7.所编写的页面必须符合W3C标准和人为审美标准

2.视频演示

【Python大数据期末/课程设计】动态爬取"纵横中文网"小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化)

3.实现流程

注意:该项目需要依靠MySQL数据库运行,请保证您的电脑中已安装了MySQL数据库且正常可用

该项目的主要目标是爬取小说网站"纵横中文网"的排行榜数据,然后对数据进行可视化处理

目标网站:小说排行榜,最新热门小说排行榜,各类原创小说排行榜,纵横中文小说网

项目的基本流程如下:创建flask服务器->向目标页面发送请求,爬取数据->在数据库中建表,将爬取到的数据处理后保存到数据库中->编写接口,响应前端发送的请求->编写前端请求,通过后端服务器获取数据->将数据渲染到页面中

1.创建服务器

接下来是每一步的实现过程以及项目的基本结构,

首先是创建服务器,在项目目录下有三个Python文件,其中"create_flask.py"文件是服务器相关文件,与flask相关的代码基本都在这个文件中,双击该文件后点击运行即可启动项目

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

2.请求数据

然后是请求数据,首先在"creat_flask.py"文件的头部有一个变量account,该参数中保存了MySQL数据库的账号、密码以及地址,启动项目前请先将该变量中的值修改为您自己的账号和密码

“create_flask.py”文件头部的account对象:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

由于服务器每次启动后最先访问的都是初始路径,即路由"/",所以我将爬取和保存数据的函数都放在了该路由下,每当用户访问路由时会先爬取数据,爬取完成后再显示页面:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

初始路径下的函数:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

其中请求函数全部保存在"get_info.py"文件中,由于不同排行榜的请求方式略有不同,所以分成了5个函数,函数接收保存着数据库账号和密码的参数account,函数内部的url变量和header变量保存的则是数据请求地址和请求头

"get_info.py"文件中的请求函数:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

然后项目会使用Python的requests库提供的方法向页面发送请求,若请求成功(res.status_code==200)则调用建表函数,并将获取到的数据传递给函数以便存储:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript
 

2.保存数据

想要保存数据,首先要在数据库中创建对应的表,然后将数据插入到表中,这里我将建表和插入函数整合到了一起,所有的建表和保存数据函数均在“create_list.py”文件中,函数接收两个参数,分别为数据库数据相关数据和爬取到的数据,当调用该函数时,函数首先会根据传入的数据库数据与后台数据库建立连接:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

然后检查当前数据库中是否存在对应的表,若存在则清空,若不存在则创建,这一步的主要目的是为了方便更新数据库内容:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

最后Python的"mysql.connector"库提供了一个非常方便的函数executemany,该函数可以通过传入的执行命令格式和数据批量向数据库中插入数据,而不需要逐个插入:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

然后将操作提交给数据库即可完成数据的保存,保存结果如下:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

该项目一共爬取了五个排行榜,每个排行榜200条数据,共1000条数据

3.建立接口

完成数据的保存后,下一步就需要编写路由接口来连接数据库与前端页面,这里我们回到"create_flask.py"文件中,在数据读取和保存完成后我设置了路由从"/"跳转至"/monthly",本质上是将月票页面当做主页使用:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

在该项目中使用的返回函数主要有两个,一个是返回页面的render_template()函数,另一个则是返回数据的jsonify()函数,接下来我来讲讲这两个路由函数的作用:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

首先是render_template()函数,该函数用于向前端返回页面,这里需要说明的是,在flask框架中前端页面并不是直接渲染的,而是前端页面通过访问后端路由,由路由返回给前端页面的,例如这里的monthly页面,在网页中输入后缀带monthly的路径时会向后端对应的"/montlhy"路由请求页面内容,路由再利用render_template()函数在当前目录下的"templates"文件中找到对应的HTML页面并返回给前端

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

而数据也是相同的流程,区别在于数据需要在JavaScript文件中通过XMLHttpRequest()向后端发送请求,请求到的数据并不会直接渲染到页面,而是返回到JavaScript文件中:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

不同的数据需哟的接口也是不同的

4.编写请求

在建立好后端接口后,下一步就是在前端发送请求以获取数据,由于一个页面中使用的数据不止一个,而数据的请求之间会有执行冲突,所以这里使用了promise来异步发送请求,以确保请求间不会冲突,

// 封装一个函数用于发送异步请求并返回 Promise 对象
function fetchData(url) {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.onload = function () {
            if (xhr.status >= 200 && xhr.status < 300) {
                var data = JSON.parse(xhr.responseText);
                resolve(data); // 请求成功,返回数据
            } else {
                reject(xhr.statusText); // 请求失败,返回错误信息
            }
        };
        xhr.onerror = function () {
            reject(xhr.statusText); // 请求错误,返回错误信息
        };
        xhr.send();
    });
}

5.渲染页面

前端在获取数据后将数据传递给echarts函数,然后渲染到页面中:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

项目共渲染了6个页面,5个榜单页面和1个总页面,

在榜单页面中鼠标悬停在饼图上时会显示数据量和饼图所占百分比:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

而总页面中展示了各榜单的部分统计数据:

【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化),python,课程设计,pycharm,flask,mysql,echarts,javascript

↓如对项目有任何问题或需要,请加下方QQ↓文章来源地址https://www.toymoban.com/news/detail-857313.html

到了这里,关于【Python大数据期末/课程设计】动态爬取“纵横中文网“小说排行榜数据并进行可视化处理 (flask框架/MySQL数据库/echarts数据可视化)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包