批量下载和改名21世纪英文报学生周报听力
admin
2024-05-08 16:09:17
0

批量下载和改名21世纪英文报学生周报听力

  • 如何找到音频
  • 痛点
  • python批量下载和改名

如何找到音频

建议使用 google chrome浏览器。
https://www.i21st.cn/ 导航横栏–报纸听力–初中–初二,以初二为例,
https://paper.i21st.cn/audio_21je2_1.html
打开一篇文章的链接,比如
https://paper.i21st.cn/story/162390.html
右键–源码,可以找到
audio id=‘audio’ src=‘https://cdn.21elt.com/paper/21je2/21sp2_800/21je2_800_162390_1.mp3’ preload=‘auto’ device=‘other’ WXAgent=‘0’> 通过迅雷可以下载。

痛点

(1)通过微信公众号听,播放器无法准确定位和前后拖动。所以最好下载后,通过其它播放器听。
(2)每个音频很短,而人工下载超过100个音频,过于浪费时间。
(3)每个音频通过数字命名,无法对应报纸的文章,而人工改名又是一大笔时间开销。

python批量下载和改名

import requests
from bs4 import BeautifulSoup
from time import sleep
import os
from win32com.client import DispatchHeaders = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}def get_url(url):wd_data = requests.get(url,headers=Headers)soup = BeautifulSoup(wd_data.text,'html.parser')return soupdef get_mp3(url):soup = get_url(url)audios = soup.select('audio')mp3 = ""for audio in audios:mp3 = mp3 + str(audio['src'])        return mp3def get_links(url):soup1 = get_url(url)#获取链接links = soup1.select('a')audios = []titles = []for alink in links:if 'href' in alink.attrs:url2 = alink['href']title = alink.get_text()if(url2[:7] == '/story/'):url22 = 'https://paper.i21st.cn' + url2                audios.append(get_mp3(url22))titles.append(title)o = Dispatch("ThunderAgent.Agent64.1")  for onemp3,onetitle in zip(audios,titles):mp3name = os.path.basename(os.path.dirname(onemp3)) + "_" +onetitle + ".mp3"print(str(onemp3)+"  "+str(mp3name))o.AddTask(str(onemp3), str(mp3name))              o.CommitTasks() if __name__ == '__main__':urls = ['https://paper.i21st.cn/audio_21je2_{}.html'.format(number) for number in range(3,5)]for url in urls:get_links(url)sleep(2)

功能分析:
get_url利用requests的网页获取功能,自动遍历每个链接。
get_mp3,在打开独立文章的网页后,通过BS4,直接找到mp3链接。
get_links有三个功能,1遍历导航页,2自动打开迅雷,3为mp3改名,几乎没有人工干预,非常节省时间。
只需要修改urls = …range(3,5)中的数字,根据自己所需来下载哪个导航页。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...