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

如何抓取无对应网页的网站目录下的PDF文件?

批量下载Dotlan EVE地图PDF文件的方案

目标目录没有索引页面,但单个PDF可通过「星域名称+.pdf」的格式访问,核心思路是先获取所有EVE星域名称,再批量生成下载链接完成抓取。以下是三种可行方法:

方法一:使用wget命令行工具

  1. 先收集所有EVE星域名称,保存为regions.txt文件,每个名称单独占一行(可从Dotlan的星域列表页面提取)。
  2. 在终端执行以下命令:
    wget -i regions.txt -B https://evemaps.dotlan.net/pdf/ --content-disposition
    
    参数说明:
    • -i regions.txt:从指定文件读取要下载的星域名称列表
    • -B:指定基础URL,自动将列表中的名称拼接为完整PDF链接
    • --content-disposition:确保文件以正确的星域名称命名保存

方法二:Python脚本(灵活可控)

步骤1:获取星域名称列表

运行以下脚本爬取完整的星域名称:

import requests
from bs4 import BeautifulSoup

# 从Dotlan星域页面爬取名称列表
resp = requests.get("https://evemaps.dotlan.net/regions")
soup = BeautifulSoup(resp.text, "html.parser")
regions = [a.text.strip() for a in soup.select("table.regions a")]

print(f"共获取到 {len(regions)} 个星域名称")

步骤2:批量下载PDF

使用获取到的列表循环下载每个文件:

import requests
import os

base_url = "https://evemaps.dotlan.net/pdf/{}.pdf"
save_dir = "eve_map_pdfs"

# 创建保存目录(不存在则自动创建)
os.makedirs(save_dir, exist_ok=True)

for region in regions:
    pdf_url = base_url.format(region)
    try:
        # 流式下载避免内存占用过高
        resp = requests.get(pdf_url, stream=True)
        resp.raise_for_status()
        
        save_path = os.path.join(save_dir, f"{region}.pdf")
        with open(save_path, "wb") as f:
            for chunk in resp.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"已完成:{region}.pdf")
    except Exception as e:
        print(f"下载失败 {region}.pdf:{str(e)}")

方法三:浏览器控制台脚本(无需额外工具)

  1. 打开Dotlan的星域列表页面,按F12打开开发者工具,切换到「控制台」标签。
  2. 粘贴以下代码并回车,浏览器会自动触发所有PDF的下载(需允许浏览器的下载弹窗):
// 提取页面上的所有星域名称
const regionNames = Array.from(document.querySelectorAll('table.regions a')).map(el => el.textContent.trim());
const baseUrl = 'https://evemaps.dotlan.net/pdf/{}.pdf';

// 批量生成下载链接并触发下载
regionNames.forEach(name => {
  const link = document.createElement('a');
  link.href = baseUrl.replace('{}', name);
  link.download = `${name}.pdf`;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
});

注意事项

  • 确保星域名称拼写准确,避免因名称错误导致404
  • 不要短时间内发起大量请求,避免触发网站的访问限制
  • 部分浏览器可能拦截批量下载,需手动允许弹窗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:01:38