如何快速下载网页上 PDF 并自动按照超链接展示文字进行重命名? PDF 的 URL 文件名是 md5 字符串。

167 天前
 Apol1oBelvedere

如何快速下载网页上几十个 PDF 并自动按照超链接展示文字进行重命名? PDF 的 URL 文件名是 md5 字符串。

492 次点击
所在节点    问与答
3 条回复
googlefans
167 天前
用 Python 结合 requests 和 BeautifulSoup 库
kiracyan
167 天前
直接爬虫解析了在代码里下载保存被
Apol1oBelvedere
166 天前
@googlefans 谢谢,调试通过可用的代码:

```
# 原先安装 pip install requests beautifulsoup4

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

# 提示用户输入要抓取的网页 URL
url = input('请输入要抓取的网页 URL: ')

# 创建一个目录来保存下载的 PDF 文件
download_dir = 'pdf_downloads'
os.makedirs(download_dir, exist_ok=True)

# 获取网页内容,并显式指定编码为 UTF-8
response = requests.get(url)
response.encoding = 'utf-8'
response.raise_for_status()

# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')

# 查找所有的 PDF 链接
pdf_links = soup.find_all('a', href=True)

for link in pdf_links:
href = link['href']
if href.lower().endswith('.pdf'):
# 获取超链接文本作为文件名
file_name = link.get_text(strip=True) + '.pdf'
# 处理文件名中的非法字符
file_name = "".join(x for x in file_name if x.isalnum() or x in " ._-")

# 拼接完整的下载 URL
download_url = urljoin(url, href)

# 下载 PDF 文件
pdf_response = requests.get(download_url)
pdf_response.raise_for_status()

# 保存文件
file_path = os.path.join(download_dir, file_name)
with open(file_path, 'wb') as f:
f.write(pdf_response.content)

# 打印下载信息,确保控制台输出使用 UTF-8 编码
print(f"Downloaded: {file_name}")

print("All PDF files have been downloaded.")


```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1046110

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX