admin管理员组

文章数量:1583584

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

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

如何找到音频

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

痛点

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

python批量下载和改名

import requests
from bs4 import BeautifulSoup
from time import sleep
import os
from win32com.client import Dispatch

Headers = {
'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 soup

def get_mp3(url):
    soup = get_url(url)
    audios = soup.select('audio')
    mp3 = ""
    for audio in audios:
        mp3 = mp3 + str(audio['src'])        
    return mp3

def 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' + 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/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)中的数字,根据自己所需来下载哪个导航页。

本文标签: 周报批量听力世纪学生