当前位置 博文首页 > DreamWeaver 的博客:【Python爬虫】从零开始爬取Sci-Hub上的论
DreamWeaver 的博客:【Python爬虫】从零开始爬取Sci-Hub上的论
作者:[db:作者]
时间:2021-08-12 18:06
【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)
- 维护日志
- 项目简介
- 步骤与实践
- STEP1 获取目标内容的列表
- STEP2 利用开发者工具进行网页调研
- 2.1 提取文章链接和分页链接的特征
- 2.2 提取文章 DOI 所在元素的特征
- 2.3 探索 sci-hub 上 pdf 资源的打开方式
- 2.3.1 梳理基本流程
- 2.3.2 查看 robots.txt
- 2.3.3 提取pdf资源的元素特征
- STEP3 开始写代码,就从"下载"入手吧
- 3.1 conda虚拟环境搭建、加载和使用
- 3.1.1 创建虚拟环境
- 3.1.2 配置下载包的镜像源
- 3.1.3 给虚拟环境安装所需模块
- 3.1.4 加载虚拟环境到我们的 IDE —— PyCharm
- 3.2 下载一个pdf文献的代码实现
- 3.2.1 用 requests 根据 DOI 获取文献对应网页的文本
- 3.2.2 提取 html 中的 pdf 资源链接 (3种方式)
- 正则表达式 (Regular Expression)
- Beautiful Soup
- Lxml
?
\star
?
-
- 3.2.3 根据获得的 pdf 链接执行下载
- 3.2.4 看看哪些地方仍需改进
- 磁盘文件合法命名
- 获得文件所需的名称 —— 文献标题
- robots.txt 解析以及下载时间间隔设置
- 添加一个简单的缓存类 Cache
- 3.3 回到 Web of Science,提取搜索页的 DOI 列表
- 3.3.1 方法一:修改 doc 属性值快速构建 url,然后从中爬取 doi
- 3.3.2 方法二:结合 Web of Science 导出功能的"零封禁几率"方法
- STEP4 组装起来,形成终极接口:sci_spider()
- 4.1 流程梳理
?
\star
?
- 4.2 组装起来,给它取个名字,就叫 "sci_spider" 好了
- 4.3 对第一次运行结果的分析与问题处理
?
\star
?
- 4.3.1 运行结果分析
- 4.3.2 问题1:标题抓取为空 —— 用 DOI 作为名字
- 4.3.3 问题2:HTTP协议头重复 —— 添加判断去重
- 4.3.4 最后的调试
- 爬虫感想
- 资源 (见GitHub)
- References
cs