使用Python爬虫示例-自动下载网页音频文件
使用库
requests
用来发送http请求。BeautifulSoup
一个灵活又方便的网页解析库,处理高效,支持多种解析器。
利用它就不用编写正则表达式也能方便的实现网页信息的抓取。- 安装和引入:
pip install requests
pip install BeautifulSoup
import requests
from bs4 import BeautifulSoup as bf
目标网站
一个需要手动点击下载mp3文件的网站,因为需要下载几百个所以很难手动操作。
获取并解析网页源代码
首先我们使用requests
获取目标网站的源代码
r = requests.get('http://www.goodkejian.com/ertonggushi.htm')
观察得知所有下载链接被存放在<a></a>
标签内,并且长度固定。且观察得知,该链接不能直接访问到下载地址,而应该将其中的amp;
去除后方可直接下载。
因此我们首先使用BeautifulSoup
将网页内容解析并将其中的<a></a>
标签提取出来:
soup = bf(r.text, 'html.parser')
res = soup.find_all('a')
访问下载链接
经过上述步骤res
就变成了包含所有目标标签的数组,要想下载网页上的所有mp3文件,只要循环把res
中的元组转换为字符串,并经过筛选、裁剪等处理后变成链接就可以使用request
访问了,并且返回值就是mp3文件的二进制表示,将其以二进制形式写进文件即可。
全部代码如下:
import requests
from bs4 import BeautifulSoup as bf
r = requests.get('http://www.goodkejian.com/ertonggushi.htm')
soup = bf(r.text, 'html.parser')
res = soup.find_all('a')
recorder = 1
# 长度为126的是要找的图标
for i in res:
dst = str(i)
if dst.__len__() == 126:
url1 = dst[9:53]
url2 = dst[57:62]
url = url1 + url2
print(url)
xjh_request = requests.get(url)
with open("./res/" + str(recorder) + ".rar", 'wb') as file:
file.write(xjh_request.content)
file.close()
recorder += 1
print("ok")