码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 零代码编程:用ChatGPT批量自动下载archive.org上的音频书


    http://archive.org 是一个神奇的网站,可以下载各种古旧的软件、书籍、音频、视频,还可以搜索各个网站的历史网页。

    比如说,一些儿童故事音频就可以在http://archive.org下载到,可以用来做英语听力启蒙用。

    举个例子,要下载https://archive.org/details/107frogandtoadallyear_202004这个网页上的所有音频内容,该怎么办呢?

    右击,检查网页,点击网络,然后选择媒体,然后可以看到正在播放的音频文件,右击复制链接,如下:

    https://archive.org/details/107frogandtoadallyear_202004/2-12+Alone.mp3

    查看网页源代码,搜索某一个音频文件标题:Alone.mp3

    找到了音频文件的地址:

    接下来就好办了,在ChatGPT中输入提示词:

    你是一个Python编程专家,现在要完成一个下载网页中音频的任务,具体步骤如下:

    打开网站:https://archive.org/details/107frogandtoadallyear_202004

    解析源代码,找出所有itemprop="hasPart"的div元素,定位其中itemprop="associatedMedia" 的link元素;

    提取link元素的href值,作为音频下载的URL地址;

    多线程下载这个音频文件,保存到电脑D盘的文件夹:Frog and Toad Audio Collection

    注意:每一步都要输出信息

    要有反爬虫措施,比如下载一个音频文件后暂停3秒;

    音频下载的Python源代码:

    import requests

    from bs4 import BeautifulSoup

    import os

    import time

    import threading

    class Downloader(threading.Thread):

    def __init__(self, url, path):

    threading.Thread.__init__(self)

    self.url = url

    self.path = path

    def run(self):

    print(f'Starting download {self.path}')

    r = requests.get(self.url, stream=True)

    with open(self.path, 'wb') as f:

    for chunk in r.iter_content(chunk_size=1024):

    if chunk:

    f.write(chunk)

    print(f'Finished download {self.path}')

    time.sleep(3) # pause for 3 seconds

    def get_audio_links(url):

    r = requests.get(url)

    soup = BeautifulSoup(r.text, 'html.parser')

    audio_links = []

    for div in soup.find_all('div', itemprop='hasPart'):

    link = div.find('link', itemprop='associatedMedia')

    if link:

    audio_links.append(link['href'])

    return audio_links

    def download_audios(url, directory):

    if not os.path.exists(directory):

    os.makedirs(directory)

    audio_links = get_audio_links(url)

    downloaders = []

    for i, audio_link in enumerate(audio_links):

    path = os.path.join(directory, f'audio{i}.mp3')

    downloader = Downloader(audio_link, path)

    downloader.start()

    downloaders.append(downloader)

    for downloader in downloaders:

    downloader.join()

    url = 'https://archive.org/details/107frogandtoadallyear_202004'

    directory = 'D:\\Frog and Toad Audio Collection'

    download_audios(url, directory)

    程序运行,很快就把网页中的音频下载完了。

  • 相关阅读:
    JAVA最全面试题汇总基础篇(四)
    KVM虚拟化常见问题汇总
    【Java8 Stream】:探秘Stream实现的核心:Collector,模拟Stream的实现
    JAVASE(复习)——API(String)
    智慧办公前沿 10月24日OffiSmart峰会深圳站议程揭晓
    中国建成世界海中最高5G基站 采用微波传输方案
    不要再说离群点难观测,来学学这种特征异常检测的高效方法
    ssm基于微信小程序的航空售票管理系统191111
    Rust 和 ScyllaDB NoSQL:提高性能的 3 种方法
    美联储如期暂停加息,非连续性加息或成常态?
  • 原文地址:https://blog.csdn.net/AIGCTribe/article/details/133406934
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号