import requests
import re
# 张学友:aHNj
# 陈奕迅:eG4
# 林忆莲:d2t3eA
name = input()
# url = 'http://www.2t58.com/so/{}/1.html'.format(name)
url = 'http://www.2t58.com/singer/{}/1.html'.format(name)
response = requests.get(url = url)
ex = '<div class="name"><a href="/song/(.*?).html" target="_mp3">.*?</a></div>'
musicIndex = re.findall(ex, response.text, re.S)
smallmusicList = []
for j in range(0, 6):
smallmusicList.append(musicIndex[j])
print(smallmusicList)
headers ={
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Connection':'keep-alive',
'Content-Length':'26',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie':'Hm_lvt_b8f2e33447143b75e7e4463e224d6b7f=1690974946; Hm_lpvt_b8f2e33447143b75e7e4463e224d6b7f=1690976158',
'Host':'www.2t58.com',
'Origin':'http://www.2t58.com',
'Referer':'http://www.2t58.com/song/bWhzc3hud25u.html',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'
}
for i in smallmusicList:
data = {'id': i,'type': 'music'}
url2 = 'http://www.2t58.com/js/play.php'
response2 = requests.post(url = url2, headers = headers, data = data)
json_data = response2.json()
musicList = json_data['url']
musicResponse = requests.get(url = musicList)
filename = json_data['title'] + '.mp3'
with open('E:/music/' + filename, 'wb') as f:
f.write(musicResponse.content)
print(filename + '下载成功!')
python爬虫-小站音乐爬虫
需积分: 0 49 浏览量
更新于2023-09-09
收藏 1KB RAR 举报
在Python编程领域,爬虫是一种常见的技术,用于自动地从互联网上抓取数据。本教程将专注于使用Python来创建一个音乐爬虫,特别是在"小站音乐"网站上的应用。这个爬虫项目的目标是获取免费音乐资源,从而为用户提供便捷的音乐获取途径。
我们需要了解Python中的基础爬虫框架。在Python中,最常用的爬虫库是BeautifulSoup和Requests。Requests库负责发送HTTP请求,获取网页源代码;而BeautifulSoup则用于解析这些HTML或XML文档,提取所需信息。在这个项目中,我们可能需要使用这两个库来抓取小站音乐的歌曲链接、歌手信息以及歌曲名称等。
确保安装了所需的库:
```bash
pip install requests beautifulsoup4
```
接着,我们需要编写代码来获取网页内容。使用`requests.get()`发送GET请求到小站音乐的页面,然后用BeautifulSoup解析返回的HTML内容。例如:
```python
import requests
from bs4 import BeautifulSoup
url = "http://music.example.com" # 小站音乐的实际URL
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
```
在解析HTML时,我们需要找到包含音乐信息的部分。这通常涉及查找特定的HTML标签和属性。例如,歌曲链接可能在`<a>`标签中,带有`href`属性;歌曲名称可能在`<h2>`或`<span>`标签内。利用BeautifulSoup的`find_all()`方法,我们可以定位到这些元素并提取数据:
```python
# 假设歌曲链接在class为'song-link'的<a>标签中,歌曲名称在class为'song-title'的<h2>标签内
song_links = soup.find_all('a', class_='song-link')
song_titles = [h2.text for h2 in soup.find_all('h2', class_='song-title')]
```
为了下载音乐文件,我们可以使用`requests`库的另一个功能——`requests.get()`的`stream=True`参数,它允许我们在不立即加载整个响应内容的情况下下载文件。我们将逐个处理歌曲链接,将每个音乐文件保存到本地:
```python
for link, title in zip(song_links, song_titles):
response = requests.get(link['href'], stream=True)
with open(title + '.mp3', 'wb') as f:
for chunk in response.iter_content(1024):
f.write(chunk)
```
以上代码会根据歌曲链接下载音乐文件,并将其命名为歌曲的标题后缀`.mp3`。
然而,需要注意的是,爬虫必须遵守网站的robots.txt协议,尊重版权,并且不应对服务器造成过大压力。此外,小站音乐可能有反爬虫策略,如验证码、IP限制或用户登录要求,因此实际爬虫可能需要更复杂的技术,如模拟登录、处理验证码或者使用代理IP。
总结,本项目"python爬虫-小站音乐爬虫"主要涉及以下知识点:
1. Python基础爬虫技术:使用Requests库发送HTTP请求,BeautifulSoup库解析HTML。
2. HTML标签和属性定位:通过CSS选择器找到目标元素。
3. 文件下载:使用`requests.get()`的`stream=True`参数逐块下载大文件。
4. 爬虫伦理:遵守robots.txt协议,尊重版权,避免对服务器造成过大负担。
5. 可能遇到的挑战:反爬虫策略,如验证码、IP限制,需要相应解决方案。
在实际操作中,你需要根据小站音乐网站的具体结构调整代码,以确保爬虫能够正确地抓取和下载音乐资源。
务农在家
- 粉丝: 42
- 资源: 3
最新资源
- 白色大气风格的摇滚音乐网站模板下载.zip
- 白色大气风格的医疗公司模板下载.zip
- 白色大气风格的医院网站模板下载.zip
- 白色大气风格的医疗设备企业网站模板.zip
- 白色大气风格的医院网页模板下载.zip
- 白色大气风格的英文网站模板下载.zip
- 白色大气风格的医院医疗网站模板下载.zip
- 白色大气风格的移动设备APP官网模板下载.zip
- 白色大气风格的有机小麦种植业网站模板下载.zip
- 白色大气风格的游泳体育竞技网站模板下载.zip
- 白色大气风格的影视传媒公司企业网站源码下载.zip
- 白色大气风格的中国教学教育网站模板下载.zip
- 白色大气风格的运动鞋销售网站模板下载.zip
- 白色大气风格的重工业公司模板下载.zip
- 白色大气风格的珠宝首饰网站模板下载.zip
- 白色大气风格的珠宝首饰官网整站网站源码下载.zip