如何用Python爬取QQ音乐排行榜中的音乐,并下载保存本地

### 使用Python爬取QQ音乐排行榜并将音乐下载到本地 要实现从QQ音乐排行榜中爬取音乐并将其保存至本地的功能,需综合运用网络请求、HTML/XML解析以及文件操作等技能。以下是具体的技术方案说明与代码示例。 --- #### 技术要点 1. **获取音乐链接** 音乐播放链接通常由特定接口生成,例如`http://isure.stream.qqmusic.qq.com/C400<song_mid>.m4a?vkey=<vkey>&guid=...`形式的URL。其中 `<song_mid>` 和 `<vkey>` 是关键参数,可通过API或页面源码提取[^1]。 2. **解析JSON数据结构** QQ音乐的API返回的数据通常是嵌套的JSON对象。例如,歌曲信息可能位于如下路径: ```json { "songlist": [ {"data": {"songmid": "...", "songname": "...", "singer": [{"name": "..."}]}}, ... ] } ``` 3. **批量下载音频文件** 利用`requests`库发起GET请求,将响应内容写入本地文件即可完成下载。 --- #### 完整代码示例 以下代码展示了如何爬取QQ音乐排行榜中的音乐,并将其保存为本地文件: ```python import os import requests from urllib.parse import quote class QQMusicDownloader: def __init__(self): self.api_url = "https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg" self.download_base_url = "http://isure.stream.qqmusic.qq.com/" self.headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } def fetch_music_info(self): """ 获取音乐排行榜信息 """ params = { 'tpl': '3', 'page': 'detail', 'type': 'top', 'topid': '4', # 替换为你感兴趣的榜单ID 'song_begin': '0', 'song_num': '100', 'g_tk_new_20200303': '', 'g_tk': '', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0' } response = requests.get(url=self.api_url, headers=self.headers, params=params) if response.status_code == 200: data = response.json() return data['songlist'] else: raise Exception(f"Failed to fetch music info: {response.status_code}") def download_song(self, song_mid, vkey, save_dir="downloads"): """ 下载单首歌曲 """ if not os.path.exists(save_dir): os.makedirs(save_dir) file_name = f"{save_dir}/{quote(song_mid)}.m4a" url = f"{self.download_base_url}C400{song_mid}.m4a?vkey={vkey}&guid=123456789&uin=0&fromtag=66" try: res = requests.get(url=url, headers=self.headers, stream=True) if res.status_code == 200: with open(file_name, "wb") as f: for chunk in res.iter_content(chunk_size=1024 * 1024): # 每次读取1MB if chunk: f.write(chunk) print(f"Downloaded: {file_name}") else: print(f"Failed to download {song_mid}, status code: {res.status_code}") except Exception as e: print(f"Error downloading {song_mid}: {e}") def run(self): """ 主程序入口 """ songs = self.fetch_music_info() # 获取音乐信息 vkey = "" # 假设已知vkey值,实际应用中需要动态获取 for song in songs[:10]: # 只处理前10首歌作为演示 song_mid = song["data"]["songmid"] title = song["data"]["songname"] singer = song["data"]["singer"][0]["name"] print(f"Processing: {title} by {singer}") self.download_song(song_mid=song_mid, vkey=vkey) if __name__ == "__main__": downloader = QQMusicDownloader() downloader.run() ``` --- #### 关键点解释 1. **API调用** 上述代码通过调用QQ音乐的公开API获取排行榜歌曲列表。该API返回的结果包含了每首歌的关键字段(如`singermid`, `songmid`),便于进一步处理[^2]。 2. **VKey 的作用** VKey是验证密钥,用于授权访问音轨资源。如果未提供有效的VKey,则无法正常下载音频文件。可以通过逆向工程或模拟登录等方式获得合法的VKey[^3]。 3. **异常处理** 在实际运行过程中可能会遇到各种错误情况(如网络超时、服务器拒绝连接)。因此,在编写生产环境下的脚本时应加入完善的日志记录和重试机制。 --- #### 注意事项 - 爬虫行为应当遵循目标站点的服务条款,避免频繁请求给对方带来负担。 - 如果涉及版权保护的内容,请确保拥有相应的使用权再进行复制传播活动。 --- ###

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

Python爬虫项目实战-爬取QQ音乐排行榜数据存储到数据库.zip

Python爬虫项目实战-爬取QQ音乐排行榜数据存储到数据库.zip

Python爬虫项目实战-爬取QQ音乐排行榜数据存储到数据库.zip

Python爬取网易云音乐热门评论

Python爬取网易云音乐热门评论

最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧。获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据。但是有的时候我们想要的数据并不能直接获取,因为并不提供直接的下载渠道或者API供我们获取数据。那么这个时候该怎么办呢?有一种比较好的办法是通过网络爬虫,即编写计算机程序伪装成用户去获得想要的数据。利用计算机的高效,我们可以轻松快速地获取数据。 那么该如何写一个爬虫呢?有很多种语言都可以写爬虫,比如Java,php,python 等,我个人比较喜欢使用python。因为python不仅有着内置的功能强大的网络库,还有诸

QQ-Music爬虫python爬取数据生成词云.rar

QQ-Music爬虫python爬取数据生成词云.rar

python爬虫案例

一个python写的百度音乐爬虫

一个python写的百度音乐爬虫

一个python写的百度音乐爬虫,需要的就去研究一下吧。

python 音乐网站评论数据爬取.zip

python 音乐网站评论数据爬取.zip

【计算机课程设计】python 音乐网站评论数据爬取, 本资源适合新手小白和在校学生,使用前请务必查看说明文档

Python大作业-网络爬虫项目.zip

Python大作业-网络爬虫项目.zip

Python期末作业

Python程序源代码王者荣耀出装小助手音乐下载器打造音乐词云网易云分析天气爬猫眼电影信息.zip

Python程序源代码王者荣耀出装小助手音乐下载器打造音乐词云网易云分析天气爬猫眼电影信息.zip

Python程序源代码王者荣耀出装小助手音乐下载器打造音乐词云网易云分析天气爬猫眼电影信息.zip

Python爬虫获取QQ群精华消息项目-支持所有格式精华消息包括文本图片群文件外部链接音乐分享-用于备份和导出群精华内容方便查看与管理-基于Pythonrequests库多线程下载.zip

Python爬虫获取QQ群精华消息项目-支持所有格式精华消息包括文本图片群文件外部链接音乐分享-用于备份和导出群精华内容方便查看与管理-基于Pythonrequests库多线程下载.zip

Python爬虫获取QQ群精华消息项目_支持所有格式精华消息包括文本图片群文件外部链接音乐分享_用于备份和导出群精华内容方便查看与管理_基于Pythonrequests库多线程下载.zip电控系统故障诊断与多电机协同控制

一些非常有趣的python爬虫例子,对新手比较友好,主要爬取淘宝、天猫、微信、豆瓣、QQ等网站

一些非常有趣的python爬虫例子,对新手比较友好,主要爬取淘宝、天猫、微信、豆瓣、QQ等网站

一些非常有趣的python爬虫例子,对新手比较友好,主要爬取淘宝、天猫、微信、豆瓣、QQ等网站

Python大作业:音乐播放软件(爬虫+可视化+数据分析+数据库).zip

Python大作业:音乐播放软件(爬虫+可视化+数据分析+数据库).zip

Python大作业:音乐播放软件(爬虫+可视化+数据分析+数据库).zip

python25个爬虫项目源码

python25个爬虫项目源码

python25个爬虫项目源码

Python爬虫案例 目前包含案例:美榜整站图片爬取、中国科技网、实习僧职位信息、下厨房菜单

Python爬虫案例 目前包含案例:美榜整站图片爬取、中国科技网、实习僧职位信息、下厨房菜单

python爬虫案例 ********************************************************** 软件架构 Python3.8 requests scrapy scrapy-redis 爬虫案例 Scrapy-redis爬取美榜整站高清美女图片 中国科技网文章抓取 实习僧爬虫(解决字体反爬)

【变电站SCD文件解析】IEC 61850 SCD 解析与回路可视化工具(Python代码实现)

【变电站SCD文件解析】IEC 61850 SCD 解析与回路可视化工具(Python代码实现)

内容概要:本文介绍了一款基于Python实现的IEC 61850标准下变电站SCD文件解析与回路可视化工具,旨在帮助电力系统自动化领域的研究人员和工程技术人员高效处理复杂的SCD(Substation Configuration Description)文件。该工具能够解析SCD文件中的IED设备信息、通信配置、GOOSE/SV发布与订阅关系等核心数据,并通过图形化界面直观展示二次回路的虚端子连接关系,实现通信链路的可视化呈现。文章重点阐述了XML数据解析、IEC 61850模型映射、数据结构设计以及前端可视化等关键技术环节的实现方案,有效提升了继电保护配置校验、系统集成调试及故障排查的工作效率与准确性。; 适合人群:具备Python编程基础,从事电力系统自动化、智能变电站设计、继电保护配置、IED设备集成及相关技术研发的工程师与科研人员。; 使用场景及目标:①快速解析大型智能变电站的SCD文件,提取设备间的通信逻辑与数据交互关系;②实现GOOSE、SV等关键虚回路的图形化展示,辅助现场调试与运维;③支持智能变电站二次系统的设计验证与集成测试;④为SCD文件的版本比对、变更管理及自动化校核提供技术支撑。; 阅读建议:此资源聚焦于电力工程实际问题的技术解决方案,建议读者结合IEC 61850通信标准的专业背景,动手运行并调试代码,深入理解SCD文件的结构特点与解析流程,并可根据具体工程项目需求进一步扩展可视化功能或将其集成至现有的运维管理系统中。

Python调用opencv识别图片人脸位置

Python调用opencv识别图片人脸位置

使用Python和OpenCV实现人脸检测的代码方案。初始代码只能处理非中文路径的图片,通过添加补丁函数imread_chinese()解决了中文路径读取问题。代码通过Haar级联分类器检测人脸位置,并用绿色矩形框标注识别结果。当人脸较多时可能出现漏检情况。文中包含完整代码展示,包括文件选择、灰度转换、人脸检测、标注绘制及结果保存等功能,并提供了检测效果示例图。补丁代码采用二进制读取和图像解码方式支持中文路径处理。

爬虫-爬取音乐排行榜音乐.rar

爬虫-爬取音乐排行榜音乐.rar

爬取特定网址音乐排行榜并导出到excel

基于scrapy框架的QQ音乐排行榜采集存储,包括代码、完整的操作报告与汇报PPT,适合大作业与课程设计参考使用

基于scrapy框架的QQ音乐排行榜采集存储,包括代码、完整的操作报告与汇报PPT,适合大作业与课程设计参考使用

包括以下内容: 需求分析,完成编写需求分析内容; 系统设计,完成编写系统的设计内容; 责搭建开发环境,完成为编写代码的同学统一环境工具; scrapy框架的学习,完成为编写所有同学讲解框架的采集原理; 代码编写,完成项目创建、爬虫创建等初始化任务; 代码编写,完成采集、解析网页、入库等内容; 数据库搭建,完成数据库创建、数据表创建。

基于Selenium与PhantomJS驱动动态渲染页面结合Scrapy框架高效抓取QQ音乐流行指数排行榜Top20歌曲数据并输出为JSON格式的项目_该项目专注于通过混合爬虫技术.zip

基于Selenium与PhantomJS驱动动态渲染页面结合Scrapy框架高效抓取QQ音乐流行指数排行榜Top20歌曲数据并输出为JSON格式的项目_该项目专注于通过混合爬虫技术.zip

基于Selenium与PhantomJS驱动动态渲染页面结合Scrapy框架高效抓取QQ音乐流行指数排行榜Top20歌曲数据并输出为JSON格式的项目_该项目专注于通过混合爬虫技术.zip

QQ音乐排行榜爬虫与数据存储的实现PPT,基于scrapy、mysql完成

QQ音乐排行榜爬虫与数据存储的实现PPT,基于scrapy、mysql完成

包含内容: 前言:本次系统建设的概要描述,包括背景分析; 需求分析:本次系统建设的需求说明; 系统设计:本次系统建设的设计说明; 创建项目:根据scrapy的操作步骤,创建项目、初始化代码; 代码编写:编写scrapy采集qq音乐排行榜,包括网页解析、数据库存储; 实现效果:展示采集后的数据。

一个Flask+爬虫的项目,可自动爬取音乐,最新电影等相关信息.zip

一个Flask+爬虫的项目,可自动爬取音乐,最新电影等相关信息.zip

一个Flask+爬虫的项目,可自动爬取音乐,最新电影等相关信息

基于Hive+PySpark的QQ音乐大数据分析-歌手及歌曲特征的深度剖析

基于Hive+PySpark的QQ音乐大数据分析-歌手及歌曲特征的深度剖析

内容概要:本文详细介绍了对QQ音乐的大数据分析过程,涉及数据采集、数据清洗、数据分析、数据可视化四个主要步骤。文中首先通过Python的Scrapy框架抓取了QQ音乐的各类数据,包括热门歌手、歌曲、排行榜和歌词等信息。接下来使用Python进行了初步的数据清洗,解决了文本格式化的问题。然后,在Hive和PySpark中分别进行了深入的数据分析,探讨了热门歌手的各种指标(如MV数量、专辑数量、关注人数等)、歌曲的特性(如语言、流派、发行公司等)及其发布时间分布情况。最后,通过pyecharts生成了直观的数据可视化图表,以辅助理解和展示分析结果。 适合人群:大数据技术人员、数据科学家、对音乐数据分析感兴趣的学者及从业者。 使用场景及目标:适用于希望通过真实案例学习和掌握大数据采集、清洗、分析及可视化全流程的研究和从业人员。目的是通过实战训练提高在数据科学领域的专业技能,加深对大数据处理流程的理解和应用。 其他说明:文中还提供了具体的Python代码实现,便于读者参照复现数据处理和分析的各个环节。此外,分析结果显示中国歌手和国语歌曲在全球范围内具有较高的关注度和支持度,反映了中国音乐市场的独特性和重要地位。

最新推荐最新推荐

recommend-type

PyPI 官网下载 | mlpack3-3.4.2-cp36-cp36m-manylinux1_x86_64.whl

资源来自pypi官网,解压后可用。 资源全名:mlpack3-3.4.2-cp36-cp36m-manylinux1_x86_64.whl
recommend-type

实现基于C++或者python基本库,初学学习之用.zip

人工智能-项目实践-机器学习
recommend-type

机器学习的一些基础算法,主要使用Python、Cpp、Matlab编写。.zip

matlab算法,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。
recommend-type

jenkins-conf:Jenkins的配置文件

mlpack Jenkins配置和测试支持 该存储库包含Jenkins( )使用的许多脚本,用于构建和测试mlpack。
recommend-type

学生成绩管理系统C++课程设计与实践

资源摘要信息:"学生成绩信息管理系统-C++(1).doc" 1. 系统需求分析与设计 在进行学生成绩信息管理系统开发前,首先需要进行系统需求分析,这是确定系统开发目标与范围的过程。需求分析应包括数据需求和功能需求两个方面。 - 数据需求分析: - 学生成绩信息:需要收集学生的姓名、学号、课程成绩等数据。 - 数据类型和长度:明确每个数据项的数据类型(如字符串、整型等)和长度,例如学号可能是字符串类型且长度为一定值。 - 描述:详细描述每个数据项的意义,以确保系统能够准确处理。 - 功能需求分析: - 列出功能列表:用户界面应提供清晰的操作指引,列出所有可用功能。 - 查询学生成绩:系统应能通过学号或姓名查询学生的成绩信息。 - 增加学生成绩信息:允许用户添加未保存的学生成绩信息。 - 删除学生成绩信息:能够通过学号或姓名删除已经保存的成绩信息。 - 修改学生成绩信息:通过学号或姓名修改已有的成绩记录。 - 退出程序:提供安全退出程序的选项,并确保所有修改都已保存。 2. 系统设计 系统设计阶段主要完成内存数据结构设计、数据文件设计、代码设计、输入输出设计、用户界面设计和处理过程设计。 - 内存数据结构设计: - 使用链表结构组织内存中的数据,便于动态增删查改操作。 - 数据文件设计: - 选择文本文件存储数据,便于查看和编辑。 - 代码设计: - 根据功能需求,编写相应的函数和模块。 - 输入输出设计: - 设计简洁明了的输入输出提示信息和操作流程。 - 用户界面设计: - 用户界面应为字符界面,方便在命令行环境下使用。 - 处理过程设计: - 设计数据处理流程,确保每个操作都有明确的处理逻辑。 3. 系统实现与测试 实现阶段需要根据设计阶段的成果编写程序代码,并进行系统测试。 - 程序编写: - 完成系统设计中所有功能的程序代码编写。 - 系统测试: - 设计测试用例,通过测试用例上机测试系统。 - 记录测试方法和测试结果,确保系统稳定可靠。 4. 设计报告撰写 最后,根据系统开发的各个阶段,撰写详细的设计报告。 - 系统描述:包括问题说明、数据需求和功能需求。 - 系统设计:详细记录内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。 - 系统测试:包括测试用例描述、测试方法和测试结果。 - 设计特点、不足、收获和体会:反思整个开发过程,总结经验和教训。 时间安排: - 第19周(7月12日至7月16日)完成项目。 - 7月9日8:00到计算机学院实验中心(三楼)提交程序和课程设计报告。 指导教师和系主任(或责任教师)需要在文档上签名确认。 系统需求分析: - 使用表格记录系统需求分析的结果,包括数据项、数据类型、数据长度和描述。 - 分析数据项如学生成绩信息、状态器、链表节点等,确定其属性和行为。 以上就是文档中提到的学生成绩信息管理系统开发的关键知识点。开发此类系统需要熟练掌握C++编程基础,了解面向对象的程序设计思想,以及熟悉文件操作和链表等数据结构的应用。此外,良好的软件开发流程意识、测试意识和文档撰写能力也是必不可少的。
recommend-type

别再手动拖拽了!用Lumerical脚本批量创建FDTD仿真结构(附完整代码)

# 告别低效建模:Lumerical脚本自动化实战指南 在光子学仿真领域,时间就是科研生命线。当同行还在GUI界面里反复点击菜单时,你已经用脚本批量生成了20组参数化结构——这不是未来场景,而是每位FDTD用户都应该掌握的基础生产力革命。本文将彻底改变你与Lumerical的交互方式,从手动拖拽的农耕时代,跃迁到自动化建模的工业文明。 ## 1. 为何脚本建模是必然选择 2019年Nature Photonics的一项研究显示,科研工作者在仿真工具上平均浪费37%的时间在重复性操作上。对于需要参数扫描的纳米光学结构设计,这个数字可能更高。手动创建10个不同尺寸的纳米柱阵列意味着: -
recommend-type

Java邮件解析任务中,如何安全高效地提取HTML邮件内容并避免硬编码、资源泄漏和类型转换异常?

<think>我们被要求优化一段Java代码,该代码用于处理邮件(特别是来自特定发件人的构建通知邮件)。代码的主要问题包括: 1. 重复获取邮件内容:在检查MIME类型后,多次调用`msg[i].getContent()`,这可能导致性能问题或流关闭异常。 2. 类型转换问题:直接将邮件内容转换为`Multipart`而不进行类型检查,可能引发`ClassCastException`。 3. 代码结构问题:逻辑嵌套过深,可读性差,且存在重复代码(如插入邮件详情的操作在两个地方都有)。 4. 硬编码和魔法值:例如在解析HTML表格时使用了硬编码的索引(如list3.get(10)),这容易因邮件
recommend-type

RH公司应收账款管理优化策略研究

资源摘要信息:"本文针对RH公司的应收账款管理问题进行了深入研究,并提出了改进策略。文章首先分析了应收账款在企业管理中的重要性,指出其对于提高企业竞争力、扩大销售和充分利用生产能力的作用。然后,以RH公司为例,探讨了公司应收账款管理的现状,并识别出合同管理、客户信用调查等方面的不足。在此基础上,文章提出了一系列改善措施,包括完善信用政策、改进业务流程、加强信用调查和提高账款回收力度。特别强调了建立专门的应收账款回收部门和流程的重要性,并建议在实际应用过程中进行持续优化。同时,文章也意识到企业面临复杂多变的内外部环境,因此提出的策略需要根据具体情况调整和优化。 针对财务管理领域的专业学生和从业者,本文提供了一个关于应收账款管理问题的案例研究,具有实际指导意义。文章还探讨了信用管理和征信体系在应收账款管理中的作用,强调了它们对于提升企业信用风险控制和市场竞争能力的重要性。通过对比国内外企业在应收账款管理上的差异,文章总结了适合中国企业实际环境的应收账款管理方法和策略。" 根据提供的文件内容,以下是详细的知识点: 1. 应收账款管理的重要性:应收账款作为企业的一项重要资产,其有效管理关系到企业的现金流、财务健康以及市场竞争力。不良的应收账款管理会导致资金链断裂、坏账损失增加等问题,严重影响企业的正常运营和长远发展。 2. 应收账款的信用风险:在信用交易日益频繁的商业环境中,企业必须对客户信用进行评估,以便采取合理的信用政策,降低信用风险。 3. 合同管理的薄弱环节:合同是应收账款管理的法律基础,严格的合同管理能够保障企业权益,减少因合同问题导致的应收账款风险。 4. 客户信用调查:了解客户的信用状况对于预测和控制应收账款风险至关重要。企业需要建立有效的客户信用调查机制,识别和筛选信用良好的客户。 5. 应收账款回收策略:企业应建立有效的账款回收机制,包括定期的账款跟进、逾期账款的催收等。同时,建立专门的应收账款回收部门可以提升回收效率。 6. 应收账款管理流程优化:通过改进企业内部管理流程,如简化审批流程、提高工作效率等措施,能够提升应收账款的管理效率。 7. 应收账款管理策略的调整和优化:由于企业的内外部环境复杂多变,因此制定的管理策略需要根据实际情况进行动态调整和持续优化。 8. 信用管理和征信体系的作用:建立和完善企业内部信用管理体系和征信体系,有助于企业更好地控制信用风险,并在市场竞争中占据有利地位。 9. 对比国内外应收账款管理实践:通过研究国内外企业在应收账款管理上的不同做法和经验,可以借鉴先进的管理理念和方法,提升国内企业的应收账款管理水平。 综上所述,本文深入探讨了应收账款管理的多个方面,为RH公司乃至其他同类型企业提供了应收账款管理的改进方向和策略,对于财务管理专业的教育和实践都具有重要的参考价值。
recommend-type

新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构

# 新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构 第一次拿到BingPi-M2开发板时,面对Tina Linux SDK里密密麻麻的文件夹,我完全不知道从哪下手。就像走进一个陌生的大仓库,每个货架上都堆满了工具和零件,却找不到操作手册。这种困惑持续了整整两天,直到我意识到——理解目录结构比死记硬背每个文件更重要。 ## 1. 为什么SDK目录结构如此重要 想象你正在组装一台复杂的模型飞机。如果所有零件都混在一个箱子里,你需要花大量时间寻找每个螺丝和面板。但如果有分门别类的隔层,标注着"机身部件"、"电子设备"、"紧固件",组装效率会成倍提升。Ti
recommend-type

Java线程池运行时状态怎么实时掌握?有哪些靠谱的监控手段?

<think>我们之前已经讨论过Java线程池监控的多种方法,包括使用第三方工具和自定义监控。现在用户再次询问Java线程池监控方法,我们需要根据引用内容以及之前讨论的内容进行总结和扩展。 引用[1]提到使用JDK自带的监控工具,引用[2]提到了三种常用的线程池创建方式,引用[3]给出了通过ThreadPoolExecutor获取线程池状态的方法。 结合之前回答的内容,我们可以将监控方法分为以下几类: 1. 使用JDK自带工具(如jconsole, jvisualvm)进行监控。 2. 通过编程方式获取线程池状态(如引用[3]所示)。 3. 扩展ThreadPoolExecutor,