当前位置 博文首页 > 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