一、项目背景与技术选型
1.1 为什么选择百度学术
百度学术收录了超过6亿篇学术文献,涵盖中外文期刊、会议、专利。其独特的“学术影响力”指标包括:
总引用量:论文被引次数
H指数:作者至少有h篇论文被引用了至少h次
G指数:弥补H指数对高被引论文不敏感的缺陷
年份分布:论文发表时间及逐年引用趋势
1.2 技术挑战
百度学术在2025年底进行了大幅反爬升级:
动态Token:每个请求携带
x-bce-signature签名Webpack异步加载:数据通过
/search接口返回加密JSONIP频率限制:单IP每分钟超过30次请求触发验证码
User-Agent校验:必须携带最新Chrome/Edge的UA
1.3 环境与库
Python 3.11+
requests2.32.3:HTTP请求execjs1.5.2:执行JavaScript解密pandas2.2.5:数据清洗fake_useragent2.0.3:随机UAretry装饰器:自动重试sqlite3:本地存储
目录
一、项目背景与技术选型
1.1 为什么选择百度学术
1.2 技术挑战
1.3 环境与库
二、逆向工程:破解百度学术的请求签名机制
2.1 抓包分析
2.2 获取动态Token
三、完整代码架构设计
3.1 目录结构
3.2 配置模块(config.py)
四、签名生成器(sign_utils.py)
五、核心爬虫(spider.py)
5.1 Session管理
5.2 反爬策略增强
六、数据解析(parser.py)
6.1 提取JSON数据
6.2 处理动态加载的引用详情
七、数据存储(storage.py)
八、中间件与代理(middleware.py)
九、完整主程序(main.py)
十、高级功能:获取H指数曲线与引用趋势
10.1 作者页面解析
10.2 批量获取论文引用年份分布
十一、异常处理与日志监控
11.1 日志配置
11.2 重试装饰器
十二、性能优化:异步+多线程
十三、结果数据分析示例
二、逆向工程:破解百度学术的请求签名机制
2.1 抓包分析
打开浏览器开发者工具(F12),访问https://xueshu.baidu.com/s?wd=深度学习,观察网络请求:
关键请求:
/s?wd=深度学习&rsv_bp=0&tn=SE_baiduxueshu_c1g...响应格式:HTML中包含一个
<script>标签,内部有window.__INITIAL_STATE__加密特征:
sign参数由token和timestamp通过HM