简单多线程,利用地址池创建多线程,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(爬虫)相关推荐

  1. python网络爬虫-爬虫实战-(爬取网易云薛之谦歌单里歌曲并下载)

    1.导入要用到的库 #导入库 import requests from fake_useragent import UserAgent from lxml import etree import re ...

  2. 网易云音乐歌单或歌曲封面提取

    右击后"复制链接",在浏览器打开链接右击后"检查元素"

  3. 【Python程序设计】基于Python Flask的网易云音乐歌单采集与可视化分析平台-源码经过调试,100%可运行

    基于Python Flask的网易云音乐歌单采集与可视化分析平台 项目获取 一.项目简介 二.开发环境 三.项目技术 四.功能介绍 五.功能结构 六.运行截图 项目获取 获取方式(点击下载):是云猿实 ...

  4. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

  5. 零基础如何用 15 行 Python 代码搞定网易云热门歌单?

    健身.吃饭.敲代码:等车.撸猫.下午茶--若能佐以合适的音乐当"配餐",总是惬意非常.本文就将带你爬一爬网易云的那些热门歌单! 作者 | 上海小胖 责编 | 仲培艺 心情好或心情坏 ...

  6. 网易云音乐歌单生成外链播放器

    (一)自己创建的歌单没有生成外链选项的解决方法 解决方法: 1.分享歌单 2.打开分享界面的歌单链接 3.打开歌单即可看到生成外链的点击链接 (二)网易云音乐歌单因为版权原因无法生成外链的解决方法 1 ...

  7. Android自定义view之网易云推荐歌单界面

    系列文章目录 Android自定义view之网易云推荐歌单界面 文章目录 系列文章目录 前言 一.实现 1.自定义一个圆角图片控件(也可直接使用第三方框架) 2.进行布局摆设 3.图片切换动画效果 二 ...

  8. selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称

    翻页爬取网易云音乐歌单作者和标题 案例目的: 通过翻页selenium操作网易云音乐,介绍如何切换iframe框架以及如何使用selenium定位数据所在的节点. 代码功能: 输入下载的数据页数,自动 ...

  9. 爬取 listen 1 网易云精选歌单歌曲

    前言 看了下listen 1 网易云精选歌单和复制链接过去的歌单请求的网址是不一样的,暂时只做了网易云精选歌单的爬取,有时间会改进,占坑 如果需要listen 1网易的歌曲单个手动下,很简单的,拉到法 ...

最新文章

  1. 华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略
  2. CMake命令之execute_process
  3. 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
  4. 机房漏电产生的危害及安全隐患解决方案
  5. Oracle数据文件的备份与恢复
  6. 长度最小的子数组--滑动窗口
  7. WCF 4.0 REST服务解决Method Not Allowed错误
  8. Document Builder: directly change element in Webdynpro ui
  9. EL表达式(web作业)
  10. 深圳人才引进,大学生,公司的福利
  11. 微博正式登陆港交所挂牌上市:开盘破发 较发行价跌6.1%
  12. Linux的目录说明
  13. CSS:标签右对齐,文本框左对齐的实现
  14. Linux镜像资源收集
  15. H5+CSS前端特效源代码:可旋转动态日文片假名
  16. 计算机的坚果云怎么删除,如何删除坚果云残留图标
  17. 摄像机DSP芯片介绍
  18. win10资源管理器打开一直正在处理文件加载不出来,桌面图标不加载
  19. 智能电脑监控器,完美解决想监控别人在自己电脑上的一切操作。
  20. 【Practical】蒙特卡罗法及其应用

热门文章

  1. 《金属切削原理》教学大纲
  2. LMV321进行运算符电压放大电路设计
  3. 百度百科词条怎么做?百度百科词条创建攻略分享
  4. 腾讯位置 - 产品介绍(结尾附源码)
  5. M5 Forecasting - Accuracy:Multi-time series prediction with prophet
  6. 计算机应用与软件样刊给几本,计算机应用与软件杂志
  7. matlab绘制单摆相图,单摆相图绘制
  8. 4月17日参加博客园俱乐部活动
  9. Unity3D游戏开发之仿仙剑奇侠传角色控制效果
  10. 10.1Activity生命周期