用ChatGPT编写python脚本批量下载教辅书音频文件

0. 需求

        周末给孩子买了一本教辅书,书上有配套的音频文件,可以通过微信扫描播放,但是平时孩子在家没有手机,怎么办呢?家中领导要求把它下载下了,放到蓝牙音箱上,那么说干就干。

1. 页面分析

音频的页面是一个播放器,网址是:
https://www.*************.cn/erweima/player.html?bqcg_id=2375,bqcg_id是对应不同的章节重2375-2399。每个章节分别有两个音频。|
通过网站代码分析,找到了mp3文件的地址:
https://h*******de1.*********.aliyuncs.com/wapaudio/61010/1-1.mp3
看网址,音频资源是放到阿里云盘中,本来想着直接在直接从这个地址上下载就行,但是当输入这个地址时,显示:

显然,这是阿里不想让你直接下。
那么我们可不可以让python模拟一个浏览器,把需要的文件下到本地呢?
答案当然是可以的。这就相当于一个爬虫嘛!
爬虫,我还是比较熟悉的,前几天才刚刚学习了爬虫和刑法的关系:

但是,还是可以试试这个技术行不行,特别是只是对爬虫有了解,编写代码能力一般的人,如何利用ChatGPT写一个代码,解决这个平时生活中可能遇到的小小问题。

2. 代码实现

这次选择一个国内套壳的ChatGPT来实现,版本3.5

提出需求:

你好,你是一位python程序员,帮我编写脚本,从网站上批量下载文件
网页的地址是: https://www.********.cn/erweima/player.html?bqcg_id={ID}
其中{ID}取值从2375到2399 每个页面中有两个mp3文件,文件地址为:
 https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{编号}-1.mp3
 https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{编号}-2.mp3
其中{编号}取值为从1到25
也就是{ID}取值为2375时,{编号}取值为1
{ID}取值为2376时,{编号}取值为2 依次类推

现在请你编写脚本,将所有的文件下载到一个文件夹中。
每个文件下载间隔10秒

很快,ChatGPT给出了答案:

好的,我已经了解你的需求了。请尝试以下代码:

import requestsimport time# 设置请求头部,避免被防火墙拦截HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 文件下载保存路径FILE_PATH = "downloaded_files"def download_mp3_file(url, file_name):"""下载MP3文件:param url: MP3文件地址:param file_name: 文件名:return:"""# 发送 GET 请求并下载文件response = requests.get(url, headers=HEADERS)if response.status_code == 200:with open(file_name, 'wb') as f:f.write(response.content)print(f"成功下载文件:{file_name}")else:print(f"下载文件失败:{file_name}")if __name__ == '__main__':for id in range(2375, 2400):for num in range(1, 26):# 构造文件地址mp3_url_1 = f"https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{num}-1.mp3"mp3_url_2 = f"https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{num}-2.mp3"# 构造文件名file_name_1 = f"{FILE_PATH}/{id}_{num}_1.mp3"file_name_2 = f"{FILE_PATH}/{id}_{num}_2.mp3"# 下载两个MP3文件,进程睡眠10秒download_mp3_file(mp3_url_1, file_name_1)download_mp3_file(mp3_url_2, file_name_2)time.sleep(10)

脚本中,我使用requests库来发送 GET 请求并下载文件,然后使用time库让进程休眠10秒钟,避免请求频繁被防火墙拦截。

此外,我采用了f-string技术来构造文件地址和文件名。你可以将代码拷贝到本地,并将文件保存为mp3_downloader.py,使用Python解释器运行即可。在运行过程中,请确保当前目录下存在一个名为downloaded_files的文件夹,因为所有下载的文件都会被保存在这个文件夹里面。

很显然是不行,下载失败:

给ChatGPT提醒:

下载失败,因为当访问链接:https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/1-1.mp3时,浏览器返回:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<Error>

<Code>AccessDenied</Code>

<Message>You are denied by bucket referer policy.</Message>

<RequestId>646AC95511D2913233E98BCC</RequestId>

<HostId>hld******e1.o**************ai.aliyuncs.com</HostId>

<BucketName>hld******e1</BucketName>

<EC>0003-00000501</EC>

</Error>

ChatGPT:

这个错误提示是由于阿里云的反爬虫机制对你的请求进行了拦截。如果服务器检测到你的请求头不符合其规则,就会返回这个错误信息。

为了避免被拦截,我们需要在请求头中增加 `Referer` 域。具体来说,每次请求时需要将包含 `Referer` 域的页面链接添加到请求头中。你可以参考以下代码实现:


import requestsimport time# 设置请求头部,避免被防火墙拦截HEADERS = {'User-Agent': 'Mozilla/5.0 (Linux; Android 11; SM-A105F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.66 Mobile Safari/537.36','Referer': 'https://www.********.cn/erweima/player.html?bqcg_id=2375'}# 文件下载保存路径FILE_PATH = "downloaded_files"def download_mp3_file(url, file_name):"""下载MP3文件:param url: MP3文件地址:param file_name: 文件名:return:"""# 发送 GET 请求并下载文件response = requests.get(url, headers=HEADERS)if response.status_code == 200:with open(file_name, 'wb') as f:f.write(response.content)print(f"成功下载文件:{file_name}")else:print(f"下载文件失败:{file_name}")if __name__ == '__main__':for id in range(2375, 2400):# 构造RefererHEADERS['Referer'] = f"https://www.********.cn/erweima/player.html?bqcg_id={id}"for num in range(1, 26):# 构造文件地址mp3_url_1 = f"https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{num}-1.mp3"mp3_url_2 = f"https://hld******e1.o**************ai.aliyuncs.com/wapaudio/61010/{num}-2.mp3"# 构造文件名file_name_1 = f"{FILE_PATH}/{id}_{num}_1.mp3"file_name_2 = f"{FILE_PATH}/{id}_{num}_2.mp3"# 下载两个MP3文件,进程睡眠10秒download_mp3_file(mp3_url_1, file_name_1)download_mp3_file(mp3_url_2, file_name_2)time.sleep(10)

请将代码中的 `referer` 变量修改为相应网页的链接,并重新执行脚本。

执行,出现一个错误,其实这个错误是倒是简单,但是还是问一下GPT:

系统报错,请修改 File D:\untitled6.py:51 in <module> download_mp3_file(mp3_url_1, file_name_1) File D:\untitled6.py:30 in download_mp3_file with open(file_name, 'wb') as f: FileNotFoundError: [Errno 2] No such file or directory: 'downloaded_files/2375_1_1.mp3'

GPT回答:

这个错误提示说明在下载文件时,程序找不到相应的文件夹或文件。你需要手动创建一个名为 "downloaded_files" 的文件夹,并且确保路径和代码中使用的一致。如果你已经手动创建了该文件夹,那么请检查文件夹路径是否有误。

最后,在Windows系统中,文件夹路径中的斜杠(/)需要替换成反斜杠(\)。因此,你可以将其修改为以下方式:

FILE_PATH = "downloaded_files\\"

或者

FILE_PATH = r"downloaded_files/"

请将代码中的文件夹路径修改一下并重新执行脚本。

修改完成:

上述,我实现了一个没有敲一行代码的编程,而且运气比较好,一次成功。

3. 结束语

完成上述一个并不难的问题后,谈两点感受:

首先,上面的实现的代码难不难,采用请求来源验证也是一种常用的反爬手段,因此,只要是爬虫的教材在介绍`HEADERS`请求头信息时,都会讲到,因此技术上并不是多特殊,但是对于一个小白还是有些门槛的,你要自己摸索,怎么也要几个小时吧。但是AI的出现,的确是能够提升工作效率。

第二,我相信类GPT这类应用会改变我们的生活和思考习惯。记得,我们上大学的时候,移动互联网还不普及,晚上在宿舍经常因为某个问题大家吵得不可开交,最后相约天亮去图书馆查资料;工作后不久,互联网、搜索引擎的普及,工作中遇到一个问题,可能大家讨论10分钟,就纷纷掏出手机,在网上搜索答案,企图找到有利于自己观点的证据;未来,我们遇到问题的时候,会不会第一时间找到AI。比如,现在上面要一篇交差事的文章,我们往往会说:你去百度搜一篇改改交了得了(提醒!这样做是不对的,我没有这样做,我都是自己写),以后大家会不会说:你去XXX上,让他给你写一篇交上去得到;你让XXX编个脚本,把XXX资源下载下了。

而这一天,我觉得离我们不远了。

严重提醒:文章只是谈论技术实现和GPT的功能,所有的网站地址已经隐藏,对文章中讨论的技术可能存在技术风险本人不负任何责任!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13376.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被“AI”坑了2800万

1984年&#xff0c;两个20出头的年轻人从相隔上千公里的两所院校分别毕业。其中一个是浙江大学数学系的史玉柱&#xff0c;另一个则是中央党校史上最年轻的研究生冯仑。在那个年代&#xff0c;他们最好的选择是接受分配&#xff0c;前者走进安徽省统计局&#xff0c;后者则留校…

Meta缺席大模型战局之因:嫌GPU太贵,用CPU代替

ChatGPT 引发了科技巨头之间的竞争&#xff0c;纷纷发布生成式 AI 产品。在本次大模型战场中&#xff0c;Meta 缺席了。 很难想象&#xff0c;Meta 此次落后于竞争对手是因为没有应用 GPU。据说Meta 把钱 All In 元宇宙了&#xff0c;现在用的是市面上最普通的 CPU 参加生成式 …

智能座舱,一场正在发生的交互革命

萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 当下&#xff0c;智能汽车已经成为城市脉络中的“数字节点”。 庞大的环境感知能力&#xff0c;快速穿梭城市的移动属性…… 相比于手机&#xff0c;汽车这个家和单位之外的“第三空间”&#xff0c;可以带给人们更多的想象&…

树莓派-14-打造智能音箱

用"树莓派"打造一款智能音响 智能音箱&#xff0c;是一个音箱升级的产物&#xff0c;是家庭消费者用语音进行上网的一个工具&#xff0c;比如点播歌曲、播报新闻、或是了解天气预报&#xff0c;它也可以对智能家居设备进行控制&#xff0c;比如打开窗帘、设置冰箱温…

利用树莓派制作智能音箱

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、语音识别二、语音合成1.引入库2.注册百度云账号&#xff0c;获取AppID和APIKey3.配置必要的信息&#xff08;语音交互&#xff09;4.合成请求token的url、获…

ChatGPT:关于WebRTC的未来,你怎么看?

了解音视频技术大会更多信息 编者按&#xff1a;ChatGPT可能在几天内成为某个领域的专家&#xff0c;不信&#xff1f;看看他对WebRTC的解读。感谢刘连响对本文的审校。 原文链接&#xff1a;https://webrtc.ventures/2023/01/the-future-of-webrtc-according-to-chatgpt/ 作者…

当 MQTT 遇上 ChatGPT:探索可自然交互的物联网智能应用

本文作者 Shifan Yu&#xff1a;EMQX 前端研发总监&#xff0c;负责 EMQX 的前端开发工作&#xff0c;同时也是 MQTTX 的开发者和维护者。 前言 随着物联网技术的迅猛发展&#xff0c;人与设备、设备与设备之间的互动已变得不再困难&#xff0c;而如何更加自然、高效、智能地实…

为何不能暂停AI研发?丨杨立昆吴恩达对话实录

北京时间4月8日凌晨0:30,Yann LeCun(杨立昆)和吴恩达针对近期甚嚣尘上的「AI暂停」一事进行了一场深入讨论,讨论主题为「为何为期6个月的AI暂停是完全错误的」。在这场风波中,二人都立场鲜明,明确表态反对暂停AI研发。汽车刚发明时没有安全带和交通信号灯,Yann LeCun认为…

智能并非万能,ChatGPT 虽火,但别忽视 AIGC 的黑与白!

ChatGPT、GPT-4 引领的 AIGC 浪潮已至&#xff0c;自动化、生成式的方式将为各行各业从底层研发工具、到中间层架构设计、再到上层应用带来一定的革新。 身处变革洪流之中的我们&#xff0c;盲目跟风势必不可取&#xff0c;那又该如何正确与理性看待这门技术&#xff0c;AIGC 将…

GPT-4的黑箱运作方式引科学家不满

原文作者&#xff1a;Katharine Sanderson 科研人员对这项AI技术充满期待&#xff0c;但对其底层技术的秘而不宣感到不满。 上周&#xff0c;人工智能公司OpenAI推出了GPT-4——驱动其热门对话机器人ChatGPT的大型语言模型的最新版本。这个语言模型能根据几乎任何提示创作有人类…

产品未出 百度朋友圈“开演”

ChatGPT这股AI龙卷风刮到国内时&#xff0c;人们齐刷刷望向百度&#xff0c;这家在国内对AI投入最高的公司最终出手了&#xff0c;大模型新项目文心一言&#xff08;ERNIE Bot&#xff09;将在3月正式亮相&#xff0c;对标微软投资的ChatGPT。 文心一言产品未出&#xff0c;百…

3·15特辑 | 少侠,可曾听说ChatGPT也有“食品安全问题”?

3月15日&#xff0c;有两件事情最吸引国内网民的眼球&#xff1a;一件是牵动所有消费者的315晚会&#xff0c;另一件则是ChatGPT母公司OpenAI于当日凌晨发布了再次爆火出圈的GPT-4。 据媒体报道&#xff0c;相比于ChatGPT之前所使用的GPT-3.5 架构&#xff0c;GPT-4实现了以下几…

最佳实践 | 用腾讯云智能语音打造智能对话机器人

在AI技术的推动下&#xff0c;智能对话机器人逐渐成为我们工作、生活中的重要效率工具&#xff0c;乃至是伙伴&#xff0c;特别是为企业带来最原始最直观的“降本增效”落地实现。 作为开发者&#xff0c;你是否有想过基于语音技术打造一款智能对话机器人呢&#xff1f; 本文将…

大语言模型(LLM)发展历程及模型相关信息汇总(2023-07-12更新)

大语言模型(large language model&#xff0c;LLM)发展历程及模型相关信息汇总&#xff08;2023-07-12更新&#xff09; LLM发展时间轴&#xff1a;以下用表格形式汇总了从 BERT&#xff08;2018-10-11&#xff09;到 Baichuan&#xff08;203-06-15&#xff09;共计 58种语言大…

一些常用的搜索技巧总结

最近ChatGPT的出现让全网哗然&#xff0c;其对自然语言和代码的处理能力&#xff0c;对文字的理解能力和固定模板下的创作能力都强得离谱。但比起这些&#xff0c;最令我惊讶的还是他及其庞大的知识库。数以千亿计的训练数据让他切实的做到了博古通今。在我看来&#xff0c;拥有…

chatgpt赋能Python-pycharm改名字

PyCharm更名为JetBrains PyCharm——专属Python开发者的最佳IDE JetBrains PyCharm是一款Python开发者最喜欢使用的IDE之一。然而&#xff0c;在2021年初&#xff0c;这款世界著名的Python IDE进行了一次重大更名——PyCharm更名为JetBrains PyCharm。在这篇文章中&#xff0c…

Claude 使用教程 AI助手,可平替Chatgpt,无需魔法

今天来分享下Claude AI工具2023-4月最新使用方法&#xff0c; Claude是Anthropic公司开发的一种基于大型语言模型的AI助手&#xff0c;类似于ChatGPT。 背景&#xff1a;Anthropic是一家由OpenAI的前联合创始人Dario Amodei和他的妹妹Daniela Amodei创立的AI研究公司 。他们的…

使用魔法改善魔法,用chatgpt生成剪贴板保存工具减轻工作量

最近开始使用chatgpt生成代码来编写小工具&#xff0c;大部分时候还算靠谱&#xff0c;就是每次从网页上粘贴内容到编辑器中比较麻烦&#xff0c;尤其是chatgpt洋洋洒洒&#xff0c;给了若干个程序代码&#xff0c;一个个的粘贴真是要了老命了。 试了试cursor&#xff0c;发现也…

Claude 免注册教程

前 OpenAI 副总裁创建的人工智能新项目 “Claude” 来了&#xff0c;有望与 ChatGPT 展开激烈竞争。 Claude 是什么&#xff1f; Claude 是由人工智能安全创业公司 Anthropic 开发的 AI 产品。Anthropic 由多位知名高校的人工智能专家联合创立&#xff0c;其宗旨是研究如何设计…

天津市人工智能计算中心揭牌 天下津梁融汇AI之力

“九河下稍天津卫&#xff0c;三道浮桥两道关”&#xff0c;这是天津人熟知的一句话&#xff0c;意思是九河下稍的尽头是天津卫&#xff0c;是说天津是九条河流的入海口。自明永乐二年天津设卫以来&#xff0c;这座城市就是江河汇聚、贯通南北的水陆码头。天津名字的由来之一&a…