PaperSpider 是一个用于自动爬取和下载 arXiv 学术论文的爬虫系统。该项目可以根据指定的学术分类(如 cs.AI、cs.CL 等)定期抓取最新发布的论文信息,包括标题、作者、摘要、PDF链接等,并将这些信息存储到数据库中。同时,系统还提供了自动下载论文PDF文件的功能。
PaperSpider/
├── app/ # 主应用目录
│ ├── __init__.py
│ ├── models/ # 数据模型
│ │ └── paper_download.py
│ ├── settings.py # Scrapy 设置
│ ├── spiders/ # 爬虫目录
│ │ ├── __init__.py
│ │ ├── arxiv_spider.py # arXiv 爬虫
│ │ ├── items.py # 数据项定义
│ │ └── pipelines.py # 数据处理管道
│ └── utils/ # 工具类
│ ├── db_utils.py # 数据库工具
│ └── downloader.py # 论文下载器
├── papers/ # 下载的论文存储目录
├── .env # 环境变量配置
├── requirements.txt # 项目依赖
├── run_spider.py # 爬虫启动脚本
├── scrapy.cfg # Scrapy 配置
└── tasks.py # Celery 任务定义
存储爬取的论文信息:
id
: 主键arxiv_id
: arXiv 论文 IDtitle
: 论文标题authors
: 作者列表 (JSON 格式)institutions
: 机构列表 (JSON 格式)abstract
: 论文摘要pdf_url
: PDF 下载链接published_date
: 发布日期categories
: 论文分类vector_id
: 向量 ID (用于向量检索)created_at
: 创建时间updated_at
: 更新时间存储论文下载状态:
id
: 主键paper_id
: 关联的论文 IDdownload_status
: 下载状态 (pending, downloading, completed, failed)download_progress
: 下载进度download_path
: 下载路径download_error
: 错误信息created_at
: 创建时间updated_at
: 更新时间pip install -r requirements.txt
CREATE DATABASE paper_assistant CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
.env
文件# 数据库配置
DB_USER=root
DB_PASSWORD=your_password
DB_HOST=localhost
DB_PORT=3306
DB_NAME=paper_assistant
# Scrapy配置
BOT_NAME=PaperAssistant
SPIDER_MODULES=['app.spiders']
NEWSPIDER_MODULE='app.spiders'
# Celery配置
CELERY_BROKER_URL='redis://localhost:6379/0'
CELERY_RESULT_BACKEND='redis://localhost:6379/0'
这将启动爬虫,根据 run_spider.py
中的配置爬取指定分类的论文。默认爬取 cs.CL 分类的最近 1 天发布的论文。
可以修改 run_spider.py
中的参数来自定义爬取行为:
# 修改爬取的分类和时间范围 process.crawl('arxiv', categories='cs.AI,cs.CL', days_back=3)
celery -A tasks worker --loglevel=info
celery -A tasks beat --loglevel=info
papers/
目录下arxiv_spider.py
来爬取更多的论文信息downloader.py
来自定义下载行为tasks.py
来设置不同的定时任务RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4