多线程采集网易云所有歌单里歌曲url(爬虫)
简单多线程,利用地址池创建多线程,n倍提高爬虫速度,获取音乐文件破解中
import re
import time
import json
import datetime
import threading
import requests_htmlpath = 'json.txt'session = requests_html.HTMLSession()
data_urls = []
get_all_song_url = []class Wangyi(object):def __init__(self):# 所有歌单页面的urlself.list_urls = [f'https://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset={offset*35}'for offset in range(38)]self.head = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'}self.proxies = {'http': '171.15.66.177:9999'}# 获取所有页面的urldef get_all_page_urls(self):self.many_thread()return data_urls# 获取一个歌单page的所有urldef get_urls(self, url):rous = session.get(url, headers=self.head, proxies=self.proxies)html = requests_html.etree.HTML(rous.text)lis = html.xpath('//*[@id="m-pl-container"]/li')for li in lis:# 歌单详情urlurl_id = 'https://music.163.com' + li.xpath('./div[1]/a/@href')[0]# 歌单名song_name = li.xpath('./div[1]/a/@title')[0]urls_data = {"url_id": url_id,"song_name": song_name,}data_urls.append(urls_data)# 获取所有歌单page的urldef many_thread(self):threads = []for url in self.list_urls:t = threading.Thread(target=Wangyi.get_urls, args=(self, url,))threads.append(t)for thread in threads:thread.start()for thread in threads:thread.join()# 获取一个歌单里所有歌曲的urldef get_song_url(self, url, song_sheet):head = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'}rous = session.get(url, headers=head)# print(rous.text)html = requests_html.etree.HTML(rous.text)links = html.xpath('//*[@class="f-hide"]/li')for link in links:song_name = link.xpath('./a/text()')[0]link = 'https://music.163.com' + link.xpath('./a/@href')[0]song_id = re.findall('song\?id=(.*)', link)[0]song_dic = {"song_sheet": song_sheet, # 歌单"song_name": song_name, # 歌名"link": link, # 链接"song_id": song_id, # 歌曲id}get_all_song_url.append(song_dic)# 多线程获取所有歌单页面里歌曲urldef many_thread_get_song_urls(self):threads_songs = []for urls in self.get_all_page_urls():url = urls['url_id']song_sheet = urls['song_name']t = threading.Thread(target=Wangyi.get_song_url, args=(self, url, song_sheet,))threads_songs.append(t)for threads_song in threads_songs:threads_song.start()for threads_song in threads_songs:threads_song.join()if __name__ == "__main__":Wangyi().many_thread_get_song_urls()string = json.dumps(get_all_song_url)with open(path, 'w') as f:f.write(string)print(string)
有12980首歌
多线程采集网易云所有歌单里歌曲url(爬虫)相关推荐
- python网络爬虫-爬虫实战-(爬取网易云薛之谦歌单里歌曲并下载)
1.导入要用到的库 #导入库 import requests from fake_useragent import UserAgent from lxml import etree import re ...
- 网易云音乐歌单或歌曲封面提取
右击后"复制链接",在浏览器打开链接右击后"检查元素"
- 【Python程序设计】基于Python Flask的网易云音乐歌单采集与可视化分析平台-源码经过调试,100%可运行
基于Python Flask的网易云音乐歌单采集与可视化分析平台 项目获取 一.项目简介 二.开发环境 三.项目技术 四.功能介绍 五.功能结构 六.运行截图 项目获取 获取方式(点击下载):是云猿实 ...
- Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...
- 零基础如何用 15 行 Python 代码搞定网易云热门歌单?
健身.吃饭.敲代码:等车.撸猫.下午茶--若能佐以合适的音乐当"配餐",总是惬意非常.本文就将带你爬一爬网易云的那些热门歌单! 作者 | 上海小胖 责编 | 仲培艺 心情好或心情坏 ...
- 网易云音乐歌单生成外链播放器
(一)自己创建的歌单没有生成外链选项的解决方法 解决方法: 1.分享歌单 2.打开分享界面的歌单链接 3.打开歌单即可看到生成外链的点击链接 (二)网易云音乐歌单因为版权原因无法生成外链的解决方法 1 ...
- Android自定义view之网易云推荐歌单界面
系列文章目录 Android自定义view之网易云推荐歌单界面 文章目录 系列文章目录 前言 一.实现 1.自定义一个圆角图片控件(也可直接使用第三方框架) 2.进行布局摆设 3.图片切换动画效果 二 ...
- selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称
翻页爬取网易云音乐歌单作者和标题 案例目的: 通过翻页selenium操作网易云音乐,介绍如何切换iframe框架以及如何使用selenium定位数据所在的节点. 代码功能: 输入下载的数据页数,自动 ...
- 爬取 listen 1 网易云精选歌单歌曲
前言 看了下listen 1 网易云精选歌单和复制链接过去的歌单请求的网址是不一样的,暂时只做了网易云精选歌单的爬取,有时间会改进,占坑 如果需要listen 1网易的歌曲单个手动下,很简单的,拉到法 ...
最新文章
- 华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略
- CMake命令之execute_process
- 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
- 机房漏电产生的危害及安全隐患解决方案
- Oracle数据文件的备份与恢复
- 长度最小的子数组--滑动窗口
- WCF 4.0 REST服务解决Method Not Allowed错误
- Document Builder: directly change element in Webdynpro ui
- EL表达式(web作业)
- 深圳人才引进,大学生,公司的福利
- 微博正式登陆港交所挂牌上市:开盘破发 较发行价跌6.1%
- Linux的目录说明
- CSS:标签右对齐,文本框左对齐的实现
- Linux镜像资源收集
- H5+CSS前端特效源代码:可旋转动态日文片假名
- 计算机的坚果云怎么删除,如何删除坚果云残留图标
- 摄像机DSP芯片介绍
- win10资源管理器打开一直正在处理文件加载不出来,桌面图标不加载
- 智能电脑监控器,完美解决想监控别人在自己电脑上的一切操作。
- 【Practical】蒙特卡罗法及其应用