【Python开源】抖音热门BGM爬虫下载~~~~
本帖最后由 珍珠奶茶丶板牙 于 2018-7-22 19:53 编辑下午无聊在某网上刷了会儿抖音,发现有些音乐还是挺好听的,可以用来做手机铃声,于是想办法从某网上把歌曲爬下来
代码仅供学习,可能代码中涉及到网站链接,请管理宽恕
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time : 2018/7/22 18:04
# Author: Bnightning
# Site : https://www.bnightning.cn
# File : douyin.py
# Software: PyCharm
# Python Version : 3.6
import requests
from bs4 import BeautifulSoup
import time
def download_file(src, file_path):
r = requests.get(src, stream=True)
f = open(file_path, "wb")
for chunk in r.iter_content(chunk_size=512):
if chunk:
f.write(chunk)
return file_path
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
save_path = "H:\\Music\\douyin\\"
url = "https://kuaiyinshi.com/hot/music/?source=dou-yin&page=1"
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
max_page = soup.select('li.page-item > a')[-2].text
for page in range(int(max_page)):
page_url = "https://kuaiyinshi.com/hot/music/?source=dou-yin&page={}".format(page + 1)
page_res = requests.get(page_url, headers=headers)
soup = BeautifulSoup(page_res.text, 'lxml')
lis = soup.select('li.rankbox-item')
singers = soup.select('div.meta')
music_names = soup.select('h2.tit > a')
for i in range(len(lis)):
music_url = "http:" + lis.get('data-audio')
print("歌名:" + music_names.text, singers.text, "链接:" + music_url)
try:
download_file(music_url,
save_path + music_names.text + ' - ' + singers.text.replace('/', ' ') + ".mp3")
except:
pass
print("第{}页完成~~~".format(page + 1))
time.sleep(1)
没有注释.差评(手动狗头) 我记得有个网站可以下载下来无水印的视频,就算有水印,提取一下应该可以用来吧。不过还是没有你这个方便 不错 强大 虽然用不到 但还是支持一下! 本帖最后由 葫芦炒鸡蛋 于 2018-7-22 20:27 编辑
for page in range(int(max_page))、for i in range(len(lis))这种写法不Pythonic,
最好写成for i in lis:
如果要用索引的话写成for index, i in enumerate(lis):# index是索引 哈哈,最近再学Python的Scrapy框架,但是BS4这个库还真的用得少,基本用re和requests。先mark住,算一个项目练手 刚开始学爬虫,谢谢楼主分享 感谢楼主的汤,呵呵 生命苦短,我用python3 Rullec 发表于 2018-7-23 10:04
赞一下楼主。
根据我之前的经验,最好对savepath那里加一层过滤:有一些字符是win系统不允许作为文件名的 ...
谢谢,我也是新手,才学习