You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的BeautifulSoup爬取并下载PDF文件:如何将文件名替换为对应描述文本

修改PDF文件名以匹配链接描述文本的解决方案

没问题,要实现用链接的描述文本给PDF命名非常简单,核心就是提取<a>标签的文本内容,再处理成合法的文件名即可。以下是修改后的完整代码,我会标注关键改动:

import os
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

url = "https://www.archives.gov/research/pentagon-papers"
folder_location = r'E:\webscraping'
if not os.path.exists(folder_location):
    os.mkdir(folder_location)

response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 定义Windows文件名中不允许的非法字符
invalid_filename_chars = '<>:"/\\|?*'

for link in soup.select("a[href$='.pdf']"):
    # 提取链接的描述文本,strip()去除前后多余的空格和换行
    link_text = link.get_text(strip=True)
    
    # 清理非法字符:将不允许的字符替换为下划线
    cleaned_filename = ''.join(
        char if char not in invalid_filename_chars else '_' 
        for char in link_text
    )
    
    # 拼接完整的文件路径,加上.pdf后缀
    filename = os.path.join(folder_location, f"{cleaned_filename}.pdf")
    
    # 下载并保存文件
    with open(filename, 'wb') as f:
        pdf_url = urljoin(url, link['href'])
        f.write(requests.get(pdf_url).content)

关键改动说明:

  • 提取链接文本:使用link.get_text(strip=True)获取<a>标签内的描述文本,strip=True能自动去除文本前后的空格、换行符等冗余内容。
  • 清理非法字符:因为Windows系统的文件名不能包含<>:\"/\\|?*这些字符,所以我们遍历文本中的每个字符,把非法字符替换为下划线(你也可以根据需求改成其他合法字符,或者直接删除)。
  • 构造文件名:将清理后的文本加上.pdf后缀,再和文件夹路径拼接,得到最终的保存路径。

这样修改后,下载的PDF文件就会以对应的描述文本命名,比如你提到的[Part II] U.S. Involvement in the Franco-Viet Minh War, 1950-1954.pdf,而不是URL里的文件名了。

内容的提问来源于stack exchange,提问作者ECII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:52:49