听力虐我千百遍,我待听力如初恋 之 爬取听力资源+音频整合(以雪莉桑德伯格哈佛大学2014毕业典礼演讲为例)

爬取听力音频并整合

初愿:最近心态发生了小小的变化,决定准备一年时间后考雅思,英语也是该断断续续拾起来了。
资源:找寻了一番后发现这个网站http://www.kekenet.com/上的听力资源不错,内容也挺全面。毕竟我还是倾向于把英语当作一种能力培养,而不是仅为了应试。挑挑拣拣后决定先从演讲部分听起来吧
在这里插入图片描述
至于爬取它的原因就是,它把一整个演讲分成了几个部分,虽然可以下载下来,但是不舒服,有时候也是乱序播放,就打算把演讲爬取下来,然后整合成一个音频,多好

目的分析

首先,打开该部分的第一页内容:http://www.kekenet.com/Article/15206/List_1.shtml
可以看到每篇演讲的小部分标题几乎一样,除了后面的编号不同。
按F12,分析一波先

可以轻易找到每部分的链接
本文以雪莉桑德伯格哈佛大学2014毕业典礼演讲为例
第一步,考虑的是如何确定它有多少个小部分,即如何找到它的所有部分。
这里我选择的是用正则匹配标题,即包含“雪莉桑德伯格哈佛大学2014毕业典礼演讲”这些字样的标签下的链接才是我需要的
找到需要的标签后就可以很自然地提取链接,但需要有一点注意,需要重新排序,以利于后面的音频整合。

代码实现

import requests
from bs4 import BeautifulSoup
import re
import pydub

mode = r'雪莉桑德伯格哈佛大学2014毕业典礼演讲'

headers = {'user-agent': 'Mozilla/5.0'}

url = 'http://www.kekenet.com/Article/15206/List_1.shtml'

res = requests.get(url, headers)

res.encoding = res.apparent_encoding

soup = BeautifulSoup(res.text, 'html.parser')

file_list = soup.find('ul', id='menu-list').find_all('li')

mp3_list = []

for file in file_list:
    title = file.find('h2').find('a')['title']
    if re.search(mode, title, re.S) is not None:
        link = file.find('h2').find('a')['href']
        re_link = (str(link)).replace('Article', 'mp3')

        mp3_list.append(re_link)

mp3_list.sort()

# 爬取音频内容

download_mode = r'href="(http://k6.kekenet.com/Sound/.+?.mp3)"'

num = 0

for i in mp3_list:
    num += 1

    res1 = requests.get(i, headers)

    res1.encoding = res1.apparent_encoding

    l1 = re.search(download_mode, res1.text, re.S)

    content = requests.get(l1.group(1), headers)

    with open('雪莉桑德伯格哈佛大学2014毕业典礼演讲%d.mp3' % num, 'wb') as mp3:
        mp3.write(content.content)

# 合并音频

m1 = pydub.AudioSegment.from_mp3(r'雪莉桑德伯格哈佛大学2014毕业典礼演讲1.mp3')
m2 = pydub.AudioSegment.from_mp3(r'雪莉桑德伯格哈佛大学2014毕业典礼演讲2.mp3')
m3 = pydub.AudioSegment.from_mp3(r'雪莉桑德伯格哈佛大学2014毕业典礼演讲3.mp3')
m4 = pydub.AudioSegment.from_mp3(r'雪莉桑德伯格哈佛大学2014毕业典礼演讲4.mp3')
m5 = pydub.AudioSegment.from_mp3(r'雪莉桑德伯格哈佛大学2014毕业典礼演讲5.mp3')

merge = m1 + m2 + m3 + m4 + m5

merge.export('雪莉桑德伯格哈佛大学2014毕业典礼演讲.mp3', format='mp3', bitrate='192k')

代码很简单,就无需赘述了。

踩过的坑

在使用pydub前需要安装ffmpeg,安装及配置过程网上搜即可,我要说的是,如果配置完环境变量、更改某个代码文件后还是报错,试试把ffmpeg.exe, ffplay.exe, ffprobe.exe这三个文件和本脚本文件放在同一目录下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALittleHigh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值