OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  links-to-pdfs:从 Notion、DocSend 及各类链接中抓取内容并生成 PDF

links-to-pdfs:从 Notion、DocSend 及各类链接中抓取内容并生成 PDF

 
  debug ·  2026-02-07 00:28:28 · 3 次点击  · 0 条评论  

名称: scraper
描述: 从 Notion、DocSend、PDF 及其他来源抓取文档并保存为本地 PDF 文件。当用户需要下载、归档或将网页文档转换为 PDF 格式时使用。支持受保护文档的身份验证流程,并通过配置文件实现会话持久化。返回已下载 PDF 的本地文件路径。


docs-scraper

一个使用浏览器自动化技术,从多种来源抓取文档并保存为本地 PDF 文件的命令行工具。

安装

npm install -g docs-scraper

快速开始

将任意文档 URL 抓取为 PDF:

docs-scraper scrape https://example.com/document

返回本地路径:~/.docs-scraper/output/1706123456-abc123.pdf

基础抓取

使用守护进程抓取(推荐,保持浏览器预热):

docs-scraper scrape <url>

使用命名配置文件抓取(用于需要身份验证的网站):

docs-scraper scrape <url> -p <profile-name>

使用预填充数据抓取(例如,为 DocSend 提供邮箱):

docs-scraper scrape <url> -D email=user@example.com

直接模式(单次运行,不使用守护进程):

docs-scraper scrape <url> --no-daemon

身份验证流程

当文档需要身份验证(登录、邮箱验证、密码)时:

  1. 初次抓取会返回一个任务 ID:
    bash docs-scraper scrape https://docsend.com/view/xxx # 输出:抓取被阻止 # 任务 ID:abc123

  2. 使用数据重试:
    bash docs-scraper update abc123 -D email=user@example.com # 或附带密码 docs-scraper update abc123 -D email=user@example.com -D password=1234

配置文件管理

配置文件用于存储已认证网站的会话 Cookie。

docs-scraper profiles list     # 列出已保存的配置文件
docs-scraper profiles clear    # 清除所有配置文件
docs-scraper scrape <url> -p myprofile  # 使用指定配置文件

守护进程管理

守护进程保持浏览器实例预热,以实现更快的抓取速度。

docs-scraper daemon status     # 检查状态
docs-scraper daemon start      # 手动启动
docs-scraper daemon stop       # 停止守护进程

注意:运行抓取命令时,守护进程会自动启动。

清理

PDF 文件存储在 ~/.docs-scraper/output/ 目录下。守护进程会自动清理超过 1 小时的文件。

手动清理:

docs-scraper cleanup                    # 删除所有 PDF
docs-scraper cleanup --older-than 1h    # 删除超过 1 小时的 PDF

任务管理

docs-scraper jobs list         # 列出等待身份验证的被阻止任务

支持的来源

  • 直接 PDF 链接 - 直接下载 PDF
  • Notion 页面 - 将 Notion 页面导出为 PDF
  • DocSend 文档 - 处理 DocSend 查看器
  • LLM 后备方案 - 使用 Claude API 处理其他任何网页

抓取器参考

每个抓取器接受特定的 -D 数据字段。请根据 URL 类型使用相应的字段。

DirectPdfScraper

处理:.pdf 结尾的 URL

数据字段: 无(直接下载)

示例:

docs-scraper scrape https://example.com/document.pdf

DocsendScraper

处理: docsend.com/view/*docsend.com/v/* 及其子域名(例如 org-a.docsend.com

URL 模式:
- 文档:https://docsend.com/view/{id}https://docsend.com/v/{id}
- 文件夹:https://docsend.com/view/s/{id}
- 子域名:https://{subdomain}.docsend.com/view/{id}

数据字段:

字段 类型 描述
email email 用于访问文档的邮箱地址
password password 受保护文档的密码/通行码
name text 您的姓名(访问受 NDA 保护的文档时必需)

示例:

# 为 DocSend 预填邮箱
docs-scraper scrape https://docsend.com/view/abc123 -D email=user@example.com

# 带密码保护
docs-scraper scrape https://docsend.com/view/abc123 -D email=user@example.com -D password=secret123

# 需要 NDA 姓名
docs-scraper scrape https://docsend.com/view/abc123 -D email=user@example.com -D name="John Doe"

# 重试被阻止的任务
docs-scraper update abc123 -D email=user@example.com -D password=secret123

注意:
- DocSend 可能需要邮箱、密码和姓名的任意组合
- 文件夹会被抓取为包含文档链接的目录 PDF
- 提供姓名时,抓取器会自动勾选 NDA 复选框


NotionScraper

处理: notion.so/**.notion.site/*

数据字段:

字段 类型 描述
email email Notion 账户邮箱
password password Notion 账户密码

示例:

# 公开页面(无需认证)
docs-scraper scrape https://notion.so/Public-Page-abc123

# 需要登录的私有页面
docs-scraper scrape https://notion.so/Private-Page-abc123 \
  -D email=user@example.com -D password=mypassword

# 自定义域名
docs-scraper scrape https://docs.company.notion.site/Page-abc123

注意:
- 公开的 Notion 页面不需要身份验证
- 在生成 PDF 前,切换块会自动展开
- 使用会话配置文件在多次抓取间保持登录状态


LlmFallbackScraper

处理: 未被其他抓取器匹配的任何 URL(自动后备方案)

数据字段: 动态 - 由 Claude 分析页面确定

LLM 抓取器使用 Claude 分析页面 HTML 并检测:
- 登录表单(动态提取字段名)
- Cookie 横幅(自动关闭)
- 可展开内容(自动展开)
- CAPTCHA(报告为被阻止)
- 付费墙(报告为被阻止)

常见动态字段:

字段 类型 描述
email email 登录邮箱(如果检测到)
password password 登录密码(如果检测到)
username text 用户名(如果登录使用用户名)

示例:

# 通用网页(无需认证)
docs-scraper scrape https://example.com/article

# 需要登录的网页
docs-scraper scrape https://members.example.com/article \
  -D email=user@example.com -D password=secret

# 当被阻止时,检查任务以获取所需字段
docs-scraper jobs list
# 然后使用抓取器检测到的字段重试
docs-scraper update abc123 -D username=myuser -D password=secret

注意:
- 需要设置 ANTHROPIC_API_KEY 环境变量
- 字段名从页面的实际表单字段中提取
- 失败前最多尝试登录 2 次
- CAPTCHA 需要手动干预


数据字段摘要

抓取器 email password name 其他
DirectPdf - - - -
DocSend -
Notion - -
LLM Fallback ✓* ✓* - 动态*

*字段通过页面分析动态检测

环境设置(可选)

仅 LLM 后备抓取器需要:

export ANTHROPIC_API_KEY=your_key

可选的浏览器设置:

export BROWSER_HEADLESS=true   # 设为 false 用于调试

常见模式

归档 Notion 页面:

docs-scraper scrape https://notion.so/My-Page-abc123

下载受保护的 DocSend 文档:

docs-scraper scrape https://docsend.com/view/xxx
# 如果被阻止:
docs-scraper update <job-id> -D email=user@example.com -D password=1234

使用配置文件进行批量抓取:

docs-scraper scrape https://site.com/doc1 -p mysite
docs-scraper scrape https://site.com/doc2 -p mysite

输出

成功:本地文件路径(例如 ~/.docs-scraper/output/1706123456-abc123.pdf
被阻止:任务 ID + 所需的凭证类型

故障排除

  • 超时docs-scraper daemon stop && docs-scraper daemon start
  • 认证失败docs-scraper jobs list 检查待处理任务
  • 磁盘空间不足docs-scraper cleanup 删除旧 PDF
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor