13.爬虫训练场集成文件采集案例,来学习一下怎么实现的

举报
梦想橡皮擦 发表于 2023/03/30 17:58:49 2023/03/30
【摘要】 本篇博客,我们在 爬虫训练场 项目中集成文件下载案例,便于大家学习文件采集。文章分为三部分,分别是普通文件,MP4 文件,M3U8格式视频文件。 普通文件在爬虫训练场集成普通文件时非常简单的,在 app 目录新建 file 文件夹,然后再新增 __init__.py 文件和 index.py 文件。index.py 文件先声明蓝图对象。from flask import Blueprint,...

本篇博客,我们在 爬虫训练场 项目中集成文件下载案例,便于大家学习文件采集。
文章分为三部分,分别是普通文件,MP4 文件,M3U8格式视频文件。

普通文件

在爬虫训练场集成普通文件时非常简单的,在 app 目录新建 file 文件夹,然后再新增 __init__.py 文件和 index.py 文件。

index.py 文件先声明蓝图对象。

from flask import Blueprint, request
from flask import render_template

f = Blueprint('file', __name__, url_prefix='/file')

于此同时还需要在 templates 目录中建立 file 文件夹,然后增加视图文件,例如 c.html 代码如下所示。

{% extends "base.html" %}
{% block content %}
{% include 'common/nav.html'%}
<div class="container">
    <h4>普通文件</h4>
</div>
{% include 'common/footer.html'%}
{% endblock %}

接下来就可以启动项目了,被忘记在 app/__init__.py 中注册蓝图。

from .file.index import *
app.register_blueprint(f)

下面在 Bootstrap5 中实现文件下载,Bootstrap 5 中的文件下载可以使用 HTML 的 a 标签来实现。你需要指定 a 标签的 href 属性为文件的 URL 地址,并且设置 download 属性来指定文件下载时使用的文件名。

例如,要在 Bootstrap 5 中实现一个文件下载链接,你可以使用以下代码:

<a href="/path/to/file.pdf" download="file.pdf">下载文件</a>

这样,当用户点击 “下载文件” 链接时,浏览器会弹出文件下载对话框,允许用户选择文件保存的位置。

为了便于下载,我们从互联网寻找一个免费的资源文件,下述代码新增四种类型文件,分别是 Word,Excel,PPT,PDF。

{% extends "base.html" %}
{% block content %}
{% include 'common/nav.html'%}
<div class="container text-center mt-3" style="min-height:600px;">
    <h3>爬虫采集文件练习</h3>
    <div class="d-grid mt-2">
        <a class="btn btn-primary"
           href="https://maths.whu.edu.cn/__local/1/12/4A/86AB997BEBDB836B166DC23CDAB_47C87642_1F200.doc"
           download="file.doc">WORD 文档:点击下载文件</a>
        <a class="btn btn-success mt-2"
           href="https://www.pipechina.com.cn/img/web/f756436145e73afced434d0838191374.xls"
           download="file.xls">Excel 文档:点击下载文件</a>

        <a class="btn btn-warning mt-2"
           href="https://ndac.env.tsinghua.edu.cn/app/data/6.1poster_16th.pptx"
           download="file.ppt">PPT 文档:点击下载文件</a>

         <a class="btn btn-danger mt-2"
           href="https://admission.ucas.ac.cn/Content/Upload/2021/6/%E5%9C%B0%E7%90%86%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F.pdf"
           download="file.pdf">PDF 文档:点击下载文件</a>
    </div>
</div>
{% include 'common/footer.html'%}
{% endblock %}

除此之外,还可以给页面增加一些图标,丰富页面样式。

要在 Bootstrap 5 中添加图标,您可以使用 <i> 标签并使用带有 .bi 类的字体图标库。

例如,要添加一个电话图标,可以使用以下代码:


请注意,需要在页面中引入 Bootstrap 字体图标库的 CSS 文件,如下所示:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">

为了让样式表更容易加载到页面中,我们需要重新调整 flask 模板结构,这里建议大家去 gitcode 查看源码,要修改的文件较多,最核心的是修改了 base.html 文件,代码如下。

<!DOCTYPE html>
<html>
{% block head %}
<head>
    {% include 'common/header.html'%}
    {% block link %}{% endblock link %}
    {% include 'common/tj.html'%}
</head>
{% endblock %}
<body>
{% include 'common/nav.html'%}
{% block content %} {% endblock content %}
{% include 'common/footer.html' %}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

继续修改 termplates/file/c.html 文件,添加图标,示例如下所示。

<i class="bi bi-file-word"></i>
<i class="bi bi-file-earmark-excel"></i>
<i class="bi bi-file-ppt"></i>
<i class="bi bi-file-earmark-pdf"></i>

运行代码,得到普通文件的下载页面。

image.png

MP4文件

下面实现 MP4 文件在线预览,先从互联网寻找到免费无版权的视频文件。

app/templates/file/mp4.html,然后继承相关模板文件。

{% extends "base.html" %}

{% block content %}

{% endblock %}

要在 Bootstrap 5 中实现视频播放,你需要使用 HTML5 的 <video> 标签。

首先,在你的 HTML 文件中插入 <video> 标签,并指定视频的 URL:

<video src="myvideo.mp4" controls></video>

其中,controls 属性会在视频上显示控制按钮,如播放/暂停、音量调节等。

你也可以设置视频的宽度和高度,以及是否自动播放:

<video src="myvideo.mp4" controls width="640" height="360" autoplay></video>

你还可以使用 Bootstrap 的网格系统来调整视频的大小和位置。例如,要将视频居中显示,可以使用类似于这样的 HTML 代码:

<div class="container">
  <div class="row">
    <div class="col-12">
      <video src="myvideo.mp4" controls class="mx-auto"></video>
    </div>
  </div>
</div>

这样,视频就会居中显示在页面中。

最后,你可能需要支持不同的视频格式,这样用户的浏览器就可以正常播放你的视频。为了达到这个目的,你可以使用多个 <source> 标签来指定不同的视频文件:

<video controls>
  <source src="myvideo.mp4" type="video/mp4">
  <source src="myvideo.webm" type="video/webm">
</video>

file/index.py 添加控制器函数,具体如下。

@f.route('/mp4')
def mp4_file():
    mp4_url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
    return render_template('file/mp4.html', file=mp4_url)

此时可以在前端页面,即 mp4.html 中调用视频地址,渲染视频。

{% block content %}
<div class="container text-center mt-3">
  <div class="row">
    <div class="col-12">
      <video src="{{file}}" controls class="mx-auto"></video>
    </div>
  </div>
</div>
{% endblock %}

得到的界面如下所示。

image.png

我们可以在此基础上使用 .d-block.w-100 类,二者将视频元素添加到页面上,并让它占满整个屏幕,如下所示:

 <video class="d-block w-100" src="{{file}}" controls></video>

你也可以使用 .embed-responsive 类来调整视频的宽高比,如下所示:

<div class="embed-responsive embed-responsive-16by9">
 <video class="embed-responsive-item" src="{{file}}" controls></video>
</div>  

在这里,.embed-responsive-16by9 类定义了视频的宽高比为 16:9。你也可以使用其他的宽高比,例如 4:31:1

另外,你还可以使用 Bootstrap 5 的其他类来调整视频的样式,例如边框颜色、圆角、阴影等。

M3U8 文件

在 Web 端播放 M3U8 文件需要使用 hls.js 文件,然后判断浏览器是否支持 HLS,支持的话用 new HLS() 建立播放器对象,指定播放源即可实现。

新建 file/m3u8.html,然后添加如下代码。

<div class="container text-center">
    <video id="video" controls loop="false" width="100%"></video>
</div>

<script type="text/javascript">
    var video = document.getElementById('video');
    if(Hls.isSupported()) {
        var hls = new Hls();
        hls.loadSource('http://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8');
        hls.attachMedia(video);
    }

</script>

视频地址从网络获取,来源不明确,在此感谢最初的提供者。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 810 篇原创博客

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。