MedResearcher/papers_crawler.py
iomgaa 27398dc890 feat: 实现论文爬取核心功能
- 新增src/crawler.py模块,实现PaperCrawler类
- 更新papers_crawler.py主文件,集成实际爬取逻辑
- 添加requests依赖支持HTTP请求
- 更新依赖锁定文件uv.lock
2025-08-23 16:33:36 +08:00

88 lines
2.4 KiB
Python

import argparse
from src.crawler import PaperCrawler
def setup_args():
"""设置命令行参数解析
Returns:
argparse.Namespace: 解析后的命令行参数
"""
parser = argparse.ArgumentParser(
description='论文爬取工具 - 用于批量爬取和处理医学研究论文',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog='''
使用示例:
%(prog)s # 使用默认参数
%(prog)s --paper_website arxiv medrxiv # 指定论文数据源
%(prog)s --parallel 10 # 设置并行度为10
'''
)
parser.add_argument(
'--paper_website',
default=["arxiv","medrxiv"],
help='论文网站 (默认: arxiv,medrxiv)',
nargs='+',
choices=["arxiv","medrxiv"]
)
parser.add_argument(
'--parallel',
type=int,
default=20,
help='并行处理线程数 (默认: 20)'
)
return parser.parse_args()
def main():
"""主函数 - 执行论文爬取任务"""
try:
# 解析命令行参数
args = setup_args()
print(f"=== 论文爬取工具启动 ===")
print(f"论文数据源: {args.paper_website}")
print(f"并行处理数: {args.parallel}")
print(f"========================")
# 初始化论文爬取器
crawler = PaperCrawler(
websites=args.paper_website,
parallel=args.parallel
)
# 执行论文爬取
print("开始爬取MIMIC-4相关论文...")
papers = crawler.crawl_papers()
if papers:
# 保存到CSV文件
csv_file_path = crawler.save_to_csv(papers)
print(f"\n=== 爬取完成 ===")
print(f"成功爬取: {len(papers)} 篇论文")
print(f"保存位置: {csv_file_path}")
print(f"================")
else:
print("未找到相关论文,请检查网络连接或关键词设置")
except FileNotFoundError as e:
print(f"错误: 找不到指定的文件 - {e}")
return 1
except ValueError as e:
print(f"错误: 参数值无效 - {e}")
return 1
except Exception as e:
print(f"错误: 程序执行异常 - {e}")
return 1
return 0
if __name__ == "__main__":
exit_code = main()
exit(exit_code)