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

求助:在不支持通配符的期刊网站批量下载PDF的方法

批量下载期刊PDF的解决方案

方法一:wget结合命令行工具提取链接

你遇到的问题是wget的HTTP协议不支持通配符匹配,得先从XML页面提取所有PDF下载链接,再批量下载:

  1. 抓取页面内所有PDF链接并保存到文件:
    curl -s https://journals.ametsoc.org/view/journals/mwre/131/5/mwre.131.issue-5.xml | grep -o 'https://journals.ametsoc.org/downloadpdf/view/journals/mwre/131/5/[^"]*\.pdf' > pdf_links.txt
    
    这个命令会把页面中符合格式的PDF链接提取到pdf_links.txt文件里。
  2. 用wget批量下载文件:
    wget --wait 10 --random-wait --continue -i pdf_links.txt
    
    -i参数指定从文件读取链接列表,既避开了通配符的问题,又保留了你设置的等待时间,避免触发反爬机制。

方法二:Python脚本批量下载

如果命令行工具不好用,Python的灵活性更强,还能自定义请求头避免被拦截:

import requests
from bs4 import BeautifulSoup
import time
import random

# 目标XML页面URL
issue_url = "https://journals.ametsoc.org/view/journals/mwre/131/5/mwre.131.issue-5.xml"
# 模拟浏览器的请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 获取页面内容
response = requests.get(issue_url, headers=headers)
response.raise_for_status()  # 检查请求是否成功

# 解析XML页面提取PDF链接
soup = BeautifulSoup(response.text, "xml")
pdf_links = []
for link in soup.find_all("a", href=True):
    if link["href"].startswith("https://journals.ametsoc.org/downloadpdf/") and link["href"].endswith(".pdf"):
        pdf_links.append(link["href"])

# 去重,避免重复下载
pdf_links = list(set(pdf_links))

# 批量下载文件
for idx, link in enumerate(pdf_links, 1):
    try:
        filename = link.split('/')[-1]
        print(f"正在下载第{idx}个文件: {filename}")
        # 流式下载大文件
        pdf_response = requests.get(link, headers=headers, stream=True)
        pdf_response.raise_for_status()
        
        with open(filename, "wb") as f:
            for chunk in pdf_response.iter_content(chunk_size=8192):
                f.write(chunk)
        
        # 随机延迟8-12秒,降低反爬风险
        time.sleep(random.uniform(8, 12))
    except Exception as e:
        print(f"下载{filename}失败: {str(e)}")
        continue

运行脚本前先安装依赖:pip install requests beautifulsoup4,脚本会自动解析XML里的PDF链接,逐个下载并添加随机延迟。

注意事项

  • 不要去掉等待时间,学术期刊网站普遍有反爬机制,频繁请求会临时封禁IP。
  • 如果下载失败,可尝试更新请求头或使用代理IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:57:51