Google Scholar Spider - Python版本
Google Scholar Spider - Python版本
这是一个用于爬取Google Scholar页面的Python爬虫脚本,可以获取学者的论文信息并生成Jekyll网站所需的Markdown文件。
功能特点
- 🔍 异步爬取Google Scholar页面
- 📝 自动生成Jekyll Markdown文件
- 🧹 智能文本清理,解决中文编码问题
- 📊 支持批量处理多篇论文
- 🛡️ 模拟浏览器请求,避免被封
- 📈 详细的日志输出和错误处理
安装依赖
# 安装Python依赖包
pip install -r script/requirements.txt
# 或者直接安装
pip install aiohttp beautifulsoup4 lxml
使用方法
1. 爬取数据
编辑 script/spider.py 文件,找到最后的 main() 调用:
# 修改为你的Google Scholar ID
asyncio.run(main("你的Scholar ID"))
然后运行脚本:
cd /Users/saltpi/Code/huangqy89.github.io
python script/spider.py
2. 生成Markdown文件
修改 script/spider.py 文件底部,注释掉爬取部分,启用Markdown生成部分:
if __name__ == "__main__":
# 注释掉爬取部分
# asyncio.run(main("AZAiLpkAAAAJ"))
# 启用Markdown文件生成
make_md_files()
然后再次运行脚本:
python script/spider.py
文件说明
spider.py- 主要的Python爬虫脚本requirements.txt- Python依赖包列表articles.json- 爬取的文章数据(生成后)_publications/*.md- 生成的Markdown文件(生成后)
主要改进
相比TypeScript/Deno版本:
- 更好的编码处理: 使用UTF-8编码,解决中文字符显示问题
- 异步处理: 使用aiohttp进行异步HTTP请求,提高爬取效率
- 错误处理: 更完善的异常处理和日志记录
- 文本清理: 智能清理特殊字符和编码错误
- 类型安全: 使用dataclass定义数据结构
- 模块化设计: 函数职责清晰,便于维护
注意事项
- 请求频率: 脚本会并发请求Google Scholar,请注意不要过于频繁
- IP限制: Google Scholar可能会限制IP访问,建议适当间隔使用
- Scholar ID: 需要提供正确的Google Scholar用户ID
- 网络环境: 需要能够访问Google Scholar的网络环境
故障排除
如果遇到编码问题,可以尝试:
- 检查系统编码设置
- 确保Python环境支持UTF-8
- 检查网络连接和Google Scholar访问权限
示例输出
生成的Markdown文件格式:
---
title: "论文标题"
collection: publications
permalink: "/publication/2023-01-01"
excerpt: "论文摘要"
date: "2023-01-01"
venue: "会议或期刊名称"
paperurl: "PDF链接"
author: "作者信息"
poster:
remark:
---
