当前位置: 首页 > article >正文

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。

简洁版

如图,页面简单,主要显示新闻标题。

分页,使用最简单的分页技术,不用ajax,在链接中增加页码参数 /txw/1 ,由flask根据参数返回新闻。

flask路由代码:

#今日头条
@app.route('/txw')
@app.route('/txw/<page>')

def today_news(page=1):

    ua = request.headers.get('User-Agent')
    mb = from_mobile(ua)

    #移动端和PC端
    file = "day_news_m.html" if mb else "day_news.html"

    news = daily_news(page)
    return render_template(file,news = news)

每天下载的新闻用文件保存。注,每条新闻设置一个id,分页就是根据id返回。比如现在最新id是10000,每页显示100页, 链接/txw/1 表示 返回id 小于10000大于9900的新闻。

复杂版,按不同频道聚合新闻,包括标题、摘要、热点、收藏等功能,其它比如HTML+CSS设置导航栏后面再讲。

新闻频道划分如下

最新:最新下载的新闻;

关注:根据设置的新闻关键词聚合新闻,这是根据自己的设定来筛选新闻,不是推荐;

要闻:宏观、政策类新闻;

时事:国际政治、军事、局势新闻;

快讯:跟股市相关的突发新闻;

财经:财经类新闻;

科技:半导体、TMT、人工智能等科技类新闻;

英文:国外科技类新闻;

社会:社会、娱乐类新闻,满足偶尔看八卦的需求。

每条新闻下载时根据标题关键词确认频道。比如标题包含以下词语的就是科技:

['通信','5G','6G','AI','人工智能','算力','GPT','openAI','云计算','短剧','元宇宙','游戏','影视','电影','AR','VR','TMT','动漫','漫画', '5.5G','头戴式','微软','Google','苹果','生成式','机器人','公有云','大模型','大数据','英伟达','脑机']

HMTL页面-导航栏

        <thead>
        <td><a href="#top">最新</a></td>
        <td><a href="#关注">关注</a></td>
        <td><a href="#要闻">要闻</a></td>
        <td><a href="#快讯">快讯</a></td>
        <td><a href="#时事">时事</a></td>
        <td><a href="#经济">财经</a></td>
        <td><a href="#TMT">科技</a></td>
        <td><a href="#消费">消费</a></td>
        <td><a href="#Tech">英文</a></td>
        <td><a href="#社会">社会</a></td>
        </thead>

新闻HTML页面主要结构:

    {% for i in news %}
        <tr><!-- 频道  体验见 http://101.35.10.13/xw -->
            <th id ={{i[0][-2]}} style="text-align: left;border: 0;background-color: #FFFFF0">{{i[0][-2]}}</th>
            <th style="text-align: left;border: 0;background-color: #FFFFF0"><a href="#top" >{{i[0][-1]}}</a></th>
            <th colspan ="12" style="border: 0;background-color: #FFFFF0"></th>
        </tr>

        {% for j in i %}
        <tr><th colspan ="14" style="font-size: 16px;text-align: left;padding: 5px">
            <!-- 标题和链接  -->
            <a href="javascript:;" onclick="show_full_news('{{j[2]}}')"> {{j[0]}}</a>
        </th></tr>
        <tr>
            <!-- 摘要 -->
            <td colspan ="14" style="font-size: 14px;text-align: left;padding: 5px">{{j[1]}}&nbsp{{j[3]}}</td>
        </tr>
        {% endfor %}

    {% endfor %}

Flask代码:

#新闻
@app.route('/xw')
def news():

    ua = request.headers.get('User-Agent')
    mb = from_mobile(ua)

    try:acct = session['acct']
    except:acct = ''
    
    file = 'news_mb.html' if mb else 'news.html'

    #返回新闻,acct用于加载关注新闻关键词,若空,则无关注新闻
    news = chs_news(acct,60,mb)

    return render_template(file,news = news)

这就是下载新闻、展现新闻的主要思路和技术。当然还有很多细节,如果大家有兴趣,后面详细说。若有疑问,尽管留言。


http://www.kler.cn/a/397428.html

相关文章:

  • 营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战
  • hive alter table add columns 是否使用 cascade 的方案
  • 【PIP】完整指南:Python `pip install` 和 `pip uninstall` 命令详解与清理技巧
  • 电子电气架构 --- 传统刷写流程怎么用在SOC上就不适用呢?
  • Java基础——多线程
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • JS学习日记(jQuery库)
  • webman使用中间件验证指定的控制器及方法[青锐CC]
  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • Redisson 中开启看门狗(watchdog)机制
  • 不用来回切换,一个界面管理多个微信
  • FPGA使用Verilog实现CAN通信
  • “高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“
  • OpenCV双目立体视觉重建
  • 在openi平台 基于华为顶级深度计算平台 openmind 动手实践
  • OSS文件上传
  • 基于微信小程序的校园超市购物系统设计与实现,LW+源码+讲解
  • onlyoffice Command service(命令服务)使用示例
  • 【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (三)
  • 要卸载 Grafana 或者从 TiDB 集群中删除 Grafana 服务节点,你需要按以下步骤操作
  • leetcode 35. 搜索插入位置 简单
  • python re模块 详解
  • 在k8s上部署Crunchy Postgres for Kubernetes
  • 流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute
  • Django的RBAC认证和权限
  • Python + Memcached:分布式应用程序中的高效缓存