自动爬取 NDSS、USENIX Security、CCS、S&P 等顶级安全会议的论文信息,提供 Web 界面查看和管理。
- ✅ 支持多个顶级安全会议(NDSS, USENIX Security, CCS, S&P 等)
- ✅ 多数据源爬取(DBLP + 会议官网)
- ✅ Web 界面查看论文(搜索、筛选、分页)
- ✅ SQLite 本地数据库存储
- ✅ 增量更新,自动去重
- ✅ 灵活配置,易于扩展新会议
- ✅ 完整的日志记录
- ✅ 统计信息可视化
get_paper/
├── config.yaml # 配置文件
├── requirements.txt # 依赖包
├── main.py # 命令行主程序
├── app.py # Web应用(推荐使用)
├── src/ # 源代码目录
│ ├── models/ # 数据模型
│ │ └── database.py # 数据库管理
│ ├── crawlers/ # 爬虫模块
│ │ ├── __init__.py
│ │ ├── base.py # 基础爬虫类(含DBLP爬虫)
│ │ └── conference_crawlers.py # 各会议专用爬虫
│ └── utils/ # 工具函数
├── static/ # 静态资源
│ ├── css/ # 样式文件
│ │ └── style.css # Apple风格设计系统
│ ├── js/ # JavaScript文件
│ └── images/ # 图片资源
├── templates/ # Web界面模板
│ ├── index.html # 首页(论文列表)
│ ├── detail.html # 论文详情
│ ├── crawl.html # 爬取管理
│ ├── statistics.html # 统计信息
│ └── config.html # 配置查看
├── data/ # 数据目录
│ └── papers.db # 论文数据库(自动生成)
├── logs/ # 日志目录
│ └── crawler.log # 爬取日志(自动生成)
└── .github/
└── copilot-instructions.md # AI助手指导文档
cd get_paperpip install -r requirements.txt编辑 config.yaml 文件:
conferences:
- name: NDSS
enabled: true
years: [2024, 2025]
- name: USENIX Security
enabled: true
years: [2024, 2025]
crawler:
download_pdf: false # 是否下载PDF
pdf_directory: ./papers # PDF保存目录
request_timeout: 30 # 请求超时(秒)
retry_times: 3 # 重试次数
delay_between_requests: 1 # 请求间隔(秒)
schedule:
enabled: true # 是否启用定时任务
time: "09:00" # 每天执行时间python main.pypython main.py --conference "NDSS" --year 2024python main.py --statspython scheduler.py调度器会:
- 首次启动时立即执行一次爬取
- 之后每天在配置的时间自动执行
- 按
Ctrl+C可停止调度器
访问 http://127.0.0.1:5000 查看所有论文
from src.models.database import DatabaseManager
db = DatabaseManager()
# 查询NDSS 2024的所有论文
papers = db.get_papers(conference='NDSS', year=2024)
for paper in papers:
print(f"{paper['title']} - {paper['authors']}")
# 查询最近10篇论文
recent = db.get_papers(limit=10)
# 获取统计信息
stats = db.get_statistics()
print(f"总论文数: {stats['total_papers']}")sqlite3 data/papers.db-- 查询所有论文
SELECT * FROM papers;
-- 按会议统计
SELECT conference, COUNT(*) as count
FROM papers
GROUP BY conference
ORDER BY count DESC;
-- 查询2024年的所有论文
SELECT title, conference, authors
FROM papers
WHERE year = 2024
ORDER BY created_at DESC;| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键 |
| title | TEXT | 论文标题 |
| authors | TEXT | 作者列表 |
| conference | TEXT | 会议名称 |
| year | INTEGER | 年份 |
| abstract | TEXT | 摘要 |
| pdf_url | TEXT | PDF 链接 |
| paper_url | TEXT | 论文页面链接 |
| doi | TEXT | DOI |
| downloaded | BOOLEAN | 是否已下载 PDF |
| local_path | TEXT | 本地路径 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |
记录每次爬取的历史信息。
DBLP 已支持大部分计算机科学会议,只需在 config.yaml 中添加:
conferences:
- name: 新会议名称 # 例如: CRYPTO, EUROCRYPT
enabled: true
years: [2023, 2024]
description: "会议完整名称"DBLP 会自动处理,无需编写代码!
如果需要从会议官网获取更多信息(如摘要),可以实现专用爬虫:
- 在
src/crawlers/conference_crawlers.py中添加:
class NewConferenceCrawler(BaseCrawler):
def crawl(self, year: int) -> List[Dict]:
url = f"https://example.com/conference{year}"
html = self.fetch_page(url)
soup = self.parse_html(html)
# 解析网页并返回论文列表
papers = []
# ... 实现解析逻辑 ...
return papers
```2. 在 `main.py` 的 `CrawlerManager.__init__` 中注册:
```python
self.crawlers = {
'NewConference': [
DBLPCrawler('NewConference', self.crawler_config),
NewConferenceCrawler('NewConference', self.crawler_config)
]
}- 在
config.yaml中启用:
conferences:
- name: NewConference
enabled: true
years: [2024]提示:系统会自动合并多个数据源的结果并去重。
- 遵守爬虫规则 - 请合理设置请求间隔(默认 1 秒),避免对目标网站造成压力
- 网站结构变化 - 会议官网结构可能会变化,DBLP 相对稳定
- 数据准确性 - DBLP 作为主要数据源,官网作为补充
- 首次爬取 - 建议先爬取最近 1-2 年的数据测试
A: 查看 logs/crawler.log 日志文件,常见原因:
- 网络连接问题 → 检查网络
- 会议网站变化 → 使用 DBLP 数据源(更稳定)
- URL 失效 → 更新爬虫代码
A: 重新爬取同一会议和年份,数据库会自动更新(基于标题+会议+年份去重)
A: 可以!在 config.yaml 中的 years 数组添加任意年份即可
A:
- 已配置: NDSS, USENIX Security, CCS, S&P, CRYPTO, EUROCRYPT 等
- 可添加: 任何在 DBLP 收录的计算机科学会议
- 自定义: 实现专用爬虫支持任何会议官网
A:
- 确保运行了
python app.py - 检查端口 5000 是否被占用
- 尝试访问
http://localhost:5000
requests- HTTP 请求beautifulsoup4- HTML 解析lxml- 高性能 HTML/XML 解析器flask- Web 框架pyyaml- 配置文件解析python-dateutil- 日期处理
用户界面层: Flask Web应用 (app.py)
↓
业务逻辑层: 爬虫管理器 (main.py)
↓
数据访问层: 数据库管理 (database.py)
↓
爬虫引擎层: 基类 + 具体实现 (crawlers/)
↓
数据源: DBLP + 会议官网
启动后访问 Web 界面,你将看到:
- 📄 论文列表 - 清晰的列表展示,支持搜索和筛选
- 🔍 论文详情 - 完整的论文信息和链接
- 📊 统计图表 - 数据可视化展示
- ⚙️ 爬取管理 - 一键爬取任意会议
欢迎提交 Issue 和 Pull Request!
如果这个项目对你有帮助,请给个 ⭐️
MIT License
- 🎨 全新 Apple 风格 UI 设计(SF Pro 字体、毛玻璃效果)
- 📁 优化项目结构(src/、static/、data/、logs/ 目录)
- ✨ 提升代码组织和可维护性
- 🎯 改进 CSS 设计系统,使用 CSS 变量
- 📚 更新文档和 AI 助手指导
- ✨ 新增 Web 界面,支持在线查看和管理
- 🎨 美化 UI 设计,提升用户体验
- 🔧 移除定时任务,改为手动触发
- 📚 优化配置文件,更易扩展新会议
- 🐛 修复多处 bug,提升稳定性
- 🎉 初始版本
- 支持 NDSS, USENIX Security, CCS, S&P
- 实现 DBLP 和官网双数据源
- 命令行界面
Made with ❤️ for Security Researchers
pyyaml: 配置文件解析tqdm: 进度条(可选)
MIT License
欢迎提交 Issue 和 Pull Request!
- 初始版本
- 支持 NDSS, USENIX Security, CCS, S&P
- 实现 DBLP 和官网双数据源
- 添加定时任务功能