python爬虫如何爬取抖音热门音乐

发布时间:2022-01-13 15:04:57 作者:小新
来源:亿速云 阅读:379

这篇文章主要为大家展示了“python爬虫如何爬取抖音热门音乐”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python爬虫如何爬取抖音热门音乐”这篇文章吧。

爬取抖音的热门音乐

这个就相对来说简单一点,这是代码运行的结果

python爬虫如何爬取抖音热门音乐

python爬虫如何爬取抖音热门音乐

获取音乐的网址https://kuaiyinshi.com/hot/music/?source=dou-yin&page=1

打开该网页F12,F5刷新

python爬虫如何爬取抖音热门音乐

做义工只需要以上的数据

根据beautifulsoup去获取,直接上代码

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 = "G:\\Music\\douyin\\"
url = "https://kuaiyinshi.com/hot/music/?source=dou-yin&page=1"
# 获取响应
res = requests.get(url, headers=headers)
# 使用beautifulsoup解析
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('h3.tit > a')
   for i in range(len(lis)):
       music_url = "http:" + lis[i].get('data-audio')
       print("歌名:" + music_names[i].text, singers[i].text, "链接:" + music_url)
       try:
           download_file(music_url,
               save_path + music_names[i].text + ' - ' + singers[i].text.replace('/', ' ') + ".mp3")
       except:
           pass
   print("第{}页完成~~~".format(page + 1))
   time.sleep(1)

将获取到的文件的url传递到下载函数中


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)
   for data in tqdm(r.iter_content(chunk_size=512)):
       #tqdm进度条的使用,for data in tqdm(iterable)
       f.write(data)
   return file_path

接下来就是关于响应体工作流的说明

python爬虫如何爬取抖音热门音乐

python爬虫如何爬取抖音热门音乐

   

默认情况下,当你进行网络请求后,响应体会立即被下载。你可以通过 stream 参数覆盖这个行为,推迟下载响应体直到访问 Response.content 属性:

tarball_url = 'https://github.com/kennethreitz/requests/tarball/master' r = requests.get(tarball_url, stream=True)

此时仅有响应头被下载下来了,连接保持打开状态,因此允许我们根据条件获取内容:

if int(r.headers['content-length']) < TOO_LONG:  content = r.content  ...

你可以进一步使用 Response.iter_content 和 Response.iter_lines 方法来控制工作流,或者以 Response.raw 从底层 urllib3 的 urllib3.HTTPResponse <urllib3.response.HTTPResponse读取。

如果你在请求中把 stream 设为 True,Requests 无法将连接释放回连接池,除非你 消耗了所有的数据,或者调用了 Response.close。 这样会带来连接效率低下的问题。如果你发现你在使用stream=True 的同时还在部分读取请求的 body(或者完全没有读取 body),那么你就应该考虑使用 contextlib.closing (文档), 如下所示:

from contextlib import closing with closing(requests.get('http://httpbin.org/get', stream=True)) as r:    # 在此处理响应。 

以上是“python爬虫如何爬取抖音热门音乐”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Python爬虫怎么爬取豆瓣影评
  2. 利用python怎么爬取抖音的评论数据

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:python如何爬取bilibili的弹幕制作词云

下一篇:如何使用python爬取网站文章将图片保存到本地并将HTML的src属性更改到本地

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》