hockel 发表于 2021-6-20 18:24:20

python模式下批量爬取网页音频数据


# 前言
最近在带学生参加一个有关党史的比赛项目,其中有个功能需要播放有关中国共产党党史的音频,于是在这个网站上[党史有声,天天学习](https://www.721ys.com/home/index/details2/type_id/105.html)找到了相关的音频文件。找了一下页面没有下载按钮。

于是我做了以下的尝试:
①:下载了一个谷歌的插件:Fatkun智能下载器。当我点击一个音频的时候,就可以下载网页内包含的音频文件了。
![](https://img-blog.csdnimg.cn/20210619172316767.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
②:用F12直接查看网页中的MP3的文件地址,然后把地址复制到新的窗口进行下载操作了。
![](https://img-blog.csdnimg.cn/20210619172427798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210619111320197.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
然后这样子一个一个进行下载和重名的步骤太过于繁琐了,之前学习了一些python的知识,于是我们就用python来提高我们的工作效率,解放我们的双手。那我们接下来就开始我们的教程:python批量进行爬取网页音频数据。**Let's go**

# 准备阶段

***一、Mind+ 1.70V及以上***

```ps:我这里用的是Mind+,当然了你们可以用其他的python编译器(python IDE,PyCharm,anaconda,mpython,慧编程...等等),因为我这边主要带的对象是学生,所以用了一个比较适合学生的python编程软件。```

首先先打开mind+,选着右上角的python模式:
![](https://img-blog.csdnimg.cn/20210619132621312.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
我们可以看到现在呈现在我们面前的是图形化界面,由于我们用到的是代码编程,使用需要切换到代码模式下进行编程:点击左上角的代码进行模型切换!
![](https://img-blog.csdnimg.cn/20210619132958960.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
然后点击右侧项目文件下面的新建文件按钮,创建一个.py文件。
![](https://img-blog.csdnimg.cn/20210619133308952.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)


***二、安装bs4库***

**1.什么是BS4?**

BS4全称是Beatiful Soup,它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为tiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编一下原始编码方式就可以了。

**2.BS4的4中对象**
- Tag对象:是html中的一个标签,用BeautifulSoup就能解析出来Tag的具体内容,具体的格式为‘soup.name‘,其中name是html下的标签。
- BeautifulSoup对象:整个html文本对象,可当作Tag对象
- NavigableString对象:标签内的文本对象
- Comment对象:是一个特殊的NavigableString对象,如果html标签内存在注释,那么它可以过滤掉注释符号保留注释文本

***最常用的还是BeautifulSoup对象和Tag对象***

我们首先点击库管理:
![](https://img-blog.csdnimg.cn/20210619134317999.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
选择pip模型进行安装:
![](https://img-blog.csdnimg.cn/20210619134428605.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
输入下面代码进行安装:
```bash
pip install beautifulsoup4
```
![](https://img-blog.csdnimg.cn/20210619134653746.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
然后点击运行进行安装即可!

`可能会提示让你更新你的pip版本信息:`
![](https://img-blog.csdnimg.cn/2021061913490325.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
这里我们只需要根据提示进行更新即可!

以管理员的模式运行CMD。输入:

```bash
cd C:\Users\83731\Documents\mindplus-py\environment\Python3.6.5-64
python.exe -m pip install --upgrade pip
```
![](https://img-blog.csdnimg.cn/20210619135253752.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
更新完成即可。
# 程序设计
我们想要效果如下:

- 1.将网页内的所有音频数据批量下载到电脑上
- 2. 在爬取过程中将音频文件进行命名
- 3. 创建一个文件夹,将爬取到的歌曲放置在该文件夹内

```python
# -*- coding:UTF8 -*-
import requests
import re
import os
from bs4 import BeautifulSoup

# 创建文件夹
Dir = r"C:\Users\83731\Downloads\mp3\\"
os.mkdir(Dir)

# 获取网页信息
url = "https://www.721ys.com/home/index/details2/type_id/105.html"
r = requests.get(url)
html_text = r.text

# 将网页进行解析
soup = BeautifulSoup(html_text,'html.parser')


# 对soup进行遍历
for i in soup.select('ul'):
    for j in i.select('li'):
      # 获取文件名与音频链接
      name = Dir + j.text.replace("\n","")
      url = j.find('i')['data-audio']
      print(name,url)
      # 获取URL的内容
      data = requests.get(url).content
      print("正在下载...")
      name = name + ".mp3"
      # 开始下载相应的音频文件
      with open(name,"wb") as f:
            f.write(data)

```
实验结果:
![](https://img-blog.csdnimg.cn/20210619142338908.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619142553280.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RvbnljYXJzb24=,size_16,color_FFFFFF,t_70)
# 总结
通过本节课的学习,如何爬取网页上的音频信息有了更进一步了解。这里抛砖引玉一下,那如果我想要爬取网页的视频或者图片怎么办呢?
更多教程欢迎订阅

个人博客:www.hockel.club

微信公众号:跟着hockel玩科创

![](https://img-blog.csdnimg.cn/20210619143928930.jpg#pic_center)

白凡 发表于 2021-6-22 15:57:57

巨佬牛逼

DF_Naiva 发表于 2021-7-1 09:34:57

#感谢分享~

佛系唐法官 发表于 2021-8-4 21:23:34

我之前也一直想把视频爬下来,可惜没学会,希望大佬能够更出爬视频教程
页: [1]
查看完整版本: python模式下批量爬取网页音频数据