科技改变生活:借助ChatGPT写Python代码

前段时间发现一个网站电子书库可以目录遍历直接下载pdf文件,于是在ChatGPT生成一段Python自动批量下载的代码,运行错误提示再反馈到ChatGPT改进代码,不一会儿就实现了功能。相比以往谷歌搜索找类似代码再根据自己需求修改,效率提高很多。

在当今科技迅速发展的时代,人工智能技术正在不断创新,为我们的生活带来了许多便利和机会。在这篇文章中,我们将分享一个有趣的经历,展示了如何借助 ChatGPT 编写 Python 代码,以实现自动批量下载 PDF 文件的功能。这个故事反映了科技如何改变我们的工作方式,提高了效率和创造力。

探索电子书库的宝藏

不久前,我发现了一个电子书库网站,提供了大量的电子书资源。然而,这些电子书都以 PDF 格式存储,而且网站上并没有提供方便的下载选项。为了获取这些有价值的电子书,我需要逐一手动下载,这显然是一个费时费力的任务。

ChatGPT 的帮助

幸运的是,我决定尝试一下 ChatGPT,看看它是否能够帮助我自动化这个任务。我向 ChatGPT 提出了一个问题:“能否帮助我编写 Python 代码,用于自动批量下载这些 PDF 文件?” ChatGPT 很快地生成了一段 Python 代码,用于下载电子书库中的 PDF 文件。我立刻将这段代码复制到我的开发环境中,并运行它。

从错误中学习

然而,在第一次尝试后,我遇到了一些错误。代码并没有完美地运行,我看到了错误消息。但这并没有使我气馁。相反,我将错误消息反馈给 ChatGPT,并询问是否有改进建议。ChatGPT 提供了一些有关如何处理错误的提示,并建议我修改代码以更好地满足我的需求。

迭代与成功

我迅速按照 ChatGPT 的建议对代码进行了修改,并再次运行了它。这一次,一切都顺利进行,代码成功地自动批量下载了所有 PDF 文件。这种体验非常令人兴奋,因为相比以往我需要在谷歌搜索中寻找类似的代码,并根据自己的需求进行修改,这个过程要复杂得多,也更费时间。

总结

这个故事展示了如何利用 ChatGPT 的强大能力来编写 Python 代码,以解决实际问题。科技的进步已经使我们能够更快、更智能地完成任务,提高了效率和创造力。未来,随着人工智能技术的不断发展,我们可以期待更多的创新和便利,改变着我们的生活和工作方式。

最后,本文也是借助ChatGPT润色完善的​。以下是输入给AI原始内容​:

请润色下列段落文字,生成一篇微信公众号文章: 

  科技改变生活:借助ChatGPT写Python代码 

​前段时间发现一个网站电子书库可以目录遍历直接下载pdf文件,于是在ChatGPT生成一段Python自动批量下载的代码,运行错误提示再反馈到ChatGPT改进代码,不一会儿就实现了功能。相比以往谷歌搜索找类似代码再根据自己需求修改,效率提高很多。

附上初始代码​:

用python实现asp服务器 web目录及子目录批量下载pdf电子书,并检查文件名编码自动转换成UTF-8格式编码存储
​
​
​
ChatGPT
​
要使用 Python 实现批量下载 ASP 服务器上的 Web 目录及其子目录中的 PDF 电子书,并检查文件名编码并自动转换为 UTF-8 格式编码后存储,您可以采取以下步骤:
​
1. 导入所需的 Python 模块:
​
```
pythonCopy codeimport os
import requests
from bs4 import BeautifulSoup
import urllib.parse
```
​
1. 定义一个函数,用于下载 PDF 电子书并自动转换文件名编码:
​
```
pythonCopy codedef download_and_convert_ebooks(url, output_directory):
    # 发送 HTTP 请求并获取页面内容
    response = requests.get(url)
    
    # 使用 BeautifulSoup 解析页面内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 查找页面中的 PDF 链接
    pdf_links = soup.find_all('a', href=True)
    
    for link in pdf_links:
        pdf_url = urllib.parse.urljoin(url, link['href'])
        pdf_filename = os.path.basename(pdf_url)
        
        # 下载 PDF 文件
        response = requests.get(pdf_url)
        
        # 将文件名编码转换为 UTF-8
        pdf_filename = pdf_filename.encode('latin-1').decode('utf-8')
        
        # 保存文件到指定目录
        with open(os.path.join(output_directory, pdf_filename), 'wb') as f:
            f.write(response.content)
        
        print(f"已下载并保存:{pdf_filename}")
```
​
1. 调用上述函数来下载 PDF 电子书。例如:
​
```
pythonCopy codeweb_url = "https://example.com/ebooks"  # 替换为 ASP 服务器的 Web 目录 URL
output_dir = "/path/to/save/pdfs"       # 指定保存 PDF 的本地目录
​
download_and_convert_ebooks(web_url, output_dir)
```
​
在这个示例中,我们定义了一个函数 `download_and_convert_ebooks`,该函数接受 ASP 服务器 Web 目录的 URL 和本地存储目录作为参数。它将查找 Web 页面中的 PDF 链接,下载每个 PDF 文件,并将文件名编码转换为 UTF-8 格式,然后将文件保存到本地目录。
​
请确保替换 `web_url` 和 `output_dir` 为实际的 ASP 服务器 Web 目录 URL 和本地存储目录。此示例假定您使用了 BeautifulSoup 库来解析 Web 页面内容,因此您需要确保已安装 BeautifulSoup,可以使用 `pip` 进行安装。

通过ChatGPT多次迭代的代码​:

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import chardet
​
# 设置目标ASP服务器的URL
base_url = 'http://ip/ebooks/'  # 替换为实际ASP服务器的URL
output_dir = 'C:/ebook/'  # 指定下载文件保存的目录
​
# 创建输出目录(如果不存在)
if not os.path.exists(output_dir):
    os.makedirs(output_dir)
​
# 定义一个函数来递归下载文件
def download_files(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
​
        # 解析HTML内容
        soup = BeautifulSoup(response.text, 'html.parser')
​
        # 查找所有链接
        links = soup.find_all('a')
​
        # 遍历链接并下载PDF文件
        for link in links:
            href = link.get('href')
            if href:
                full_url = urljoin(url, href)
                if full_url.endswith('.pdf'):
                    # 获取文件名
                    response = requests.head(full_url)
                    content_type = response.headers.get('content-type')
                    content_disposition = response.headers.get('content-disposition')
                    
                    if content_disposition and 'filename=' in content_disposition:
                        filename_start = content_disposition.index('filename=') + len('filename=')
                        filename = content_disposition[filename_start:].strip(' \t\n\r"')
                    else:
                        filename = os.path.basename(full_url)
​
                    # 检测文件名编码并转换为UTF-8
                    filename = os.fsdecode(filename)  # 将文件名从字节序列解码为字符串
                    pdf_filename = os.path.join(output_dir, filename)
​
                    # 下载PDF文件
                    pdf_response = requests.get(full_url)
                    pdf_response.raise_for_status()
                    with open(pdf_filename, 'wb') as pdf_file:
                        pdf_file.write(pdf_response.content)
                    print(f"下载完成:{pdf_filename}")
​
        # 查找子目录并递归下载
        for link in links:
            href = link.get('href')
            if href and href.endswith('/'):
                subdir_url = urljoin(url, href)
                download_files(subdir_url)
​
    except Exception as e:
        print(f"下载错误:{e}")
​
# 开始下载
download_files(base_url)
​

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注