跳转至

Python练习:正则表达式

题目1

点击这里,打开网址

这个网址包含了优质的英语学习音频文件。

这些音频文件 在网页的html文件内容都是以mp3结尾的,如下图所示:

image


要求大家写程序:

  • 调用外部程序wget,使用如下命令,下载这个网页的html文本内容,存为文件index.html
wget http://www.listeningexpress.com/studioclassroom/ad/
  • 读取该文件并且使用正则表达式获取里面所有的mp3文件的网址

  • 并且调用外部程序wget依次下载下来。

Windows上的wget可以点击这里 下载。 这个程序不用安装,直接在命令行里使用即可

注意:

  • 获取的音频网址前面需要加上 前缀 http://www.listeningexpress.com/studioclassroom/ad/ 才是完整的下载地址

  • MP3文件中有空格字符,组成下载网址时,需要进行url编码,否则空格会被当成命令行分隔符。参考代码如下所示

>>> from urllib.parse import quote
>>> quote('2019-04-13 NEWSworthy Clips.mp3')
'2019-04-13%20NEWSworthy%20Clips.mp3'

答案视频讲解-1


请大家点击此处链接,观看讲解视频

答案视频讲解-2


请大家点击此处链接,观看讲解视频


补充练习

VIP实战班学员请联系老师获取补充练习

题目1-答案

import re,os
from urllib.parse import quote

pageUrl = 'http://www.listeningexpress.com/studioclassroom/ad/'
WGET_EXE = r'd:\wget.exe'

# 下载网页文件
os.system(f'{WGET_EXE} {pageUrl}')

# 读取网页内容
with open('index.html',encoding='gbk') as f:
    content = f.read()

p = re.compile(r"javascript:p\('(.*?\.mp3)'\)")
mp3links = p.findall(content)

print('获取到如下mp3文件:')
for link in mp3links:
    print(link)



for link in mp3links:
    fullAddr = pageUrl + quote(link)
    print(f'\n\n下载{fullAddr}')
    os.system(f'{WGET_EXE} {fullAddr}')
    print(f'ok')