Python爬取新概念英语第一册所有mp3内容

本文分享了使用Python爬虫获取新概念英语第一册所有mp3的过程,包括获取每课名称和链接,然后下载MP3并按课程名称保存。适合无法负担补习费用或缺少听力资源的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python爬取新概念英语第一册所有mp3内容

女儿开始学英语,上不起补习班,买了一套新概念英语竟然没有听力部分,所以下载一下吧…送给类似这种状况的大叔们。

网址:
在这里插入图片描述
目标:每课的名字和对应的听力部分mp3内容
查到对应的链接:
在这里插入图片描述
点开每课的链接,找到MP3的链接:
在这里插入图片描述
在这里插入图片描述
思路:
1,获取每课的名称和链接
2,点开课程的链接获取MP3的链接
3,下载MP3, 并按照课程名称保存

完整代码如下:

‘’‘###直接用记得copy之后path中内容改成自己的###’’’

import re
import time
import requests
import os

session = requests.session()

#step1, get each course name and href
def get_course(url):
    global course_link_list, course_name_list
    url_content = session.get(url).content.decode()
    course_link = re.compile(r'<h3 class="list-title">.*?<a href="(.*?)".*?', re.S)
    course_name = re.compile(r'<h3 class="list-title">.*?title="(.*?)".*?', re.S)
    course_link_list = re.findall(course_link, url_content)
    course_name_list = re.findall(course_name, url_content)
    
#step2, open each course href and find each audio
def get_audio(course_link_list):
    global audio_list
    audio_list = []
    for i in range(0, len(course_link_list)):
        audio_url_content = session.get(course_link_list[i]).content.decode()
        audio_links = re.compile(r'<audio class=.*?src="(.*?)" />.*?', re.S)
        audio_link = re.findall(audio_links, audio_url_content)[0]
        time.sleep(0.05)
        audio_list.append(audio_link)
    #print(audio_list)
    return audio_list
    
#step3, download and re_name each audio
def download_audio(audio_list, course_name_list):
    path = r'C:\Users\Documents\python test\download_1109'
    path_list = []
    for i in range(len(course_name_list)):
        paths = os.path.join(path, str(course_name_list[i]).strip('?') + '.mp3')
        #课程名字中有特殊符号,不然会报OSError
        path_list.append(paths)
        
    for audio in enumerate(audio_list):
        content = session.get(audio[1]).content
        with open(path_list[audio[0]], 'wb') as f:
            f.write(content)
            time.sleep(0.5)
            #可以增加print查看正在下载的内容

if __name__ == '__main__':
    initial_url = 'http://www.hlyy.in/category/neceng/nce-1'
    get_course(initial_url)
    get_audio(course_link_list)
    download_audio(audio_list, course_name_list)

输出的内容:
在这里插入图片描述
大家可以尝试第二册,第三册等其他内容。当然好多APP中已有,可以忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值