【大学生实践项目】基于Flask开发的聚闻View新闻网(爬虫)

大抵是不用进厂了罢。



目录

一、🌎Python简介

二、🌎Flask简介

三、🔖网站演示

📜登陆页面设计

📜网站首页设计

📜新闻热搜网页设计

📜聚闻新闻网页面

📜聚闻网View搜索页面

​📜聚闻网View词频统计页面

四、📚网站介绍

五、⚙️ 网站代码

🌙部分代码样例,获取源码请 —> 关 注 ↓公 Z 号 获取更多源码 !

app.py

六、获取代码

🥇Summary

获取源码?私信?关注?点赞?收藏?WeChat?



一、🌎Python简介

Python是一种高级、解释性、面向对象的编程语言。它具有简洁的语法和易于阅读的代码风格,使得它成为初学者和专业开发人员的首选语言之一。

Python具有广泛的应用领域,包括Web开发、数据分析、人工智能、科学计算、网络编程等。它拥有强大的第三方库和工具生态系统,如NumPy、Pandas、Matplotlib和TensorFlow,使得开发人员能够快速构建复杂的应用程序。

Python还是一种跨平台的语言,可以在多个操作系统上运行,如Windows、Linux和MacOS。

由于其易学易用的特性,Python已经成为编程教育的主流语言之一。许多大学和学校都将Python作为入门级编程语言进行教学。

总体而言,Python是一种功能强大、易于学习和使用的编程语言,适用于各种应用场景,并且在业界有着广泛的应用和支持。


二、🌎Flask简介

Flask诞生于2010年, Armin Ronacher的一个愚人节玩笑。不过现在已经是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展,都需要用第三方的扩展来实现。用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。你可以选择MySQL,也可以用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2 .

Python最出名的框架要数Django,(也就是昨天提到的,不知道大家是否还记得)此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。

Flask是一个轻量级的Web应用程序框架,使用Python编写。它提供了一些用于构建Web应用程序的基本工具和组件,使得开发人员可以更加快速地构建功能齐全的Web应用程序。Flask的特点包括:

1、简单易用:Flask的设计理念是简单至上,它提供了基本的路由和模板引擎,使得开发人员可以快速地搭建Web应用程序的骨架。

2扩展性强:Flask的设计允许开发者根据需要添加各种扩展,例如数据库抽象层、表单处理、用户认证等。

3社区活跃:由于Flask简单易用且功能强大,吸引了大量的开发者使用,形成了庞大的社区。社区提供了丰富的插件和资源,帮助开发者解决问题。

4、灵活度高:Flask采用约定优于配置的方式,给予开发者较大的自由度,可以根据项目需求进行定制。

5支持Jinja2模板引擎:Jinja2是一个功能强大的模板引擎,允许开发者在模板中嵌入Python代码,使得视图和业务逻辑分离。

6、支持多种环境:Flask可以在各种环境中运行,包括开发环境和生产环境,这得益于其灵活的配置和部署方式。

,Flask是一个强大而灵活的Web应用程序框架,适合快速开发小型到中型规模的Web应用程序。由于其简单性和扩展性,许多Web开发人员选择使用Flask作为他们的首选框架。


三、🔖网站演示

📜登陆页面设计

用户名:root

密码:root

📜网站首页设计

📜新闻热搜网页设计

此页面通过爬取各大网站热搜头条汇聚

📜聚闻新闻网页面

📜聚闻网View搜索页面

📜聚闻网View词频统计页面


四、📚网站介绍

聚合新闻系统网站的开发理念主要包括以下几个方面:

1、全面覆盖:聚合新闻系统网站坚持致力于聚合来自不同来源的新闻报道和信息,包括传统媒体、社交媒体、自媒体等。通过整合这些资源,用户可以在一个平台上获取全面的新闻报道和信息,满足其对新闻和信息的需求。

2、实时更新:聚合新闻系统网站具备实时更新和刷新功能,能够实时抓取和发布最新的新闻报道和信息。用户可以随时获取最新的新闻内容,了解世界各地的动态。

3、个性化服务:聚合新闻系统网站致力于为用户提供个性化的新闻阅读服务。通过分析用户的兴趣、偏好和行为,能够根据用户的个性化需求,推荐符合其需求的新闻报道和信息。这种个性化服务可以提高用户体验,满足用户对新闻和信息的需求。

4、易用性:聚合新闻系统网站的设计应注重用户体验,使其操作简单、直观、易用。用户可以快速找到自己感兴趣的新闻报道和信息,并方便地进行浏览、分享和评论等操作。

5、简洁性:聚合新闻系统网站的页面设计逐渐削减,坚持极简主义,在更小的屏幕看到更大的世界,同时在简洁的网站页面下,读者可以更加专注于新闻本身。

总的来说,聚合新闻系统网站的开发理念是以用户为中心,提供全面、实时、个性化、易用的新闻阅读服务,满足社会大众在这样一个快节奏的生活方式下了解到更多的热点时政新闻,更加深入了解当今时代发展和变革的故事。聚合新闻系统平台通过聚合各种新闻源,使用户能够更加方便、快捷地获取全面、实时的新闻报道和信息,满足了人们在信息时代的需求。


五、⚙️ 网站代码

🌙部分代码样例,获取源码请 —> 关 注 ↓公 Z 号 获取更多源码 ! 

python3.8

app.py

from flask import Flask, render_template
import pymysql
from model.forms import SearchForm
from flask import request
import useful_functions
import spider_modul
from flask import render_template, flash
import json
from flask import Flask, jsonify, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_caching import Cache
from flask import make_response

from flask import Flask, session, redirect, url_for, escape, request

from news_model.news import news_bp

# 这里对数据库内容进行提取
# spider_modul.run()
datalist = useful_functions.get_datalist()
# datalist2 = useful_functions.get_datalist2()
# datalist_reverse = datalist
# datalist_reverse.reverse()
# 这里分析数据库内容,提炼出数据库信息,并对文本内容分词
datainfo1, string = useful_functions.get_datalist_info(datalist)

# 计算 topK=8 的词汇对应的词频
words, weights = useful_functions.get_word_weights(string, topK=8)

app = Flask(__name__)


app.register_blueprint(news_bp)

app.config["SECRET_KEY"] = "12345678"


# 首页重定位
@app.route('/index')
def home_page():
    return index()


@app.route('/temp')
def temp_page():
    return index()


@app.route('/')
def index():
    global weights
    global words
    global data_info
    print(words, weights)
    data_info = datainfo1
    return render_template("index.html", news_info=data_info)


# 登录页
@app.route('/denglu', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'admin':
            error = 'Invalid username or password. Please try again!'
        else:

            #闪现
            flash('You were successfully logged in')
            session['username'] = request.form['username']
            return redirect(url_for('index.html'))

    return render_template('login.html', error=error)


# 注册页
@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template("register_1.html")


# 退出登录
@app.route('/logout')
def logout():
    # remove the username from the session if it is there

    session.pop('username', None)
    return redirect(url_for('index'))


# 新闻缩略页
#源
@app.route('/news')
def news_page():
    return render_template("news.html",news=datalist)

#第二个
app.config.from_pyfile('config.py')

db = SQLAlchemy(app)

# 缓存
cache = Cache(app,  config={'CACHE_TYPE': 'simple', 'CACHE_DEFAULT_TIMEOUT': 10})

@app.route('/news2')
@cache.cached()
def news2():
    sql = "select `data`, `data_type`, `name`, `created` from hotrows " \
          "where id in (select max(id) from hotrows group by data_type)"
    rows = db.engine.execute(sql)
    results = []
    for row in rows:
        results.append({
            'data': json.loads(row.data),
            'data_type': row.data_type,
            'name': row.name,
            'created': row.created.strftime("%Y-%m-%d %H:%M:%S")
        })
        # print(row);
    return render_template('news2.html', results=results)

@app.route('/api')
@cache.cached()
def index_api():
    rows = db.engine.execute("select * from hotrows")
    results = []
    for row in rows:
        results.append({
            'data': json.loads(row.data),
            'data_type': row.data_type,
            'name': row.name,
            'created': row.created.strftime("%Y-%m-%d %H:%M:%S")
        })
    return jsonify(results)


# 基于词频绘制的词云
@app.route('/word')
def word_page():
    return render_template("word.html", news_info=data_info)



# 基于词频绘制的词云
@app.route('/data_analysis')
def data_analysis():
    return render_template("data_analysis_index.html")


# 基于词频绘制的词云
@app.route('/analysis_index')
def analysis_index():
    return render_template("analysis_index.html")



# 链接到我的个人主页
@app.route('/team')
def team_page():
    return render_template("team.html")


# 数据库文本信息分析,topK8的词语及频率,暂时用的是直方图
@app.route('/analysis')
def analysis_page():
    return render_template("analysis.html", words=words, weights=weights)


# 搜索界面
@app.route('/search')
def search_page():
    form = SearchForm()
    return render_template('search.html', form=form)


# 搜索  搜索结果返回界面,返回时展示数据库中所有内容,包括正文文本
@app.route('/news_result', methods=['POST', 'GET'])
def newsResult_page():
    form = SearchForm()
    search = request.args.get("query")
    search_list = []
    cnn_search = pymysql.connect(host='127.0.0.1', user='root', password='123456', port=3306,
                                 database='news_with_keyword',
                                 charset='utf8')
    cursor_search = cnn_search.cursor()
    sql_search = "select * from guanchazhe where content like '{}'".format('%' + search + '%')
    print(sql_search)
    cursor_search.execute(sql_search)
    for item_search in cursor_search.fetchall():
        search_list.append(item_search)
    cursor_search.close()
    cnn_search.close()
    print(search_list)
    return render_template("news_result.html", form=form, news=search_list)


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=80)

六、获取代码

正确的代码文件及路径,见下图:

第一步,通过微信公众号下载源码压缩包,解压并打开文件夹,即为上图样式;

第二步,创建环境,我使用的是 anaconda python3.8

第三步,打开 pycharm 导入项目,点击 app.py 文件运行;

以上就是我们此次期末实践作业的全部内容了,是否精彩呢?如果有好的建议或者想法可以联系我,一起交流🙇‍;
————————————————


至此,本篇文章就已经全部结束了,感谢大家的观看。

已许久许久许久……未更新。

忙于考试。

加油加油加油!!!

/(ㄒoㄒ)/~~


🥇Summary

上述内容就是此次    的全部内容了,感谢大家的支持,相信在很多方面存在着不足乃至错误,希望可以得到大家的指正。🙇‍(ง •_•)ง

我非轻舟

2024年第三期,继续加油!!!

希望大家有好的意见或者建议,欢迎私信,一起加油


以上就是本篇文章的全部内容了

 ~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !
 

获取源码?私信?关注?点赞?收藏?WeChat?

👍+✏️+⭐️+🙇‍

有需要源码的小伙伴可以 关注下方微信公众号 " Enovo开发工厂 "🙇‍  回复 " flaskview-1 "

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enovo_你当像鸟飞往你的山

好好读书!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值