一个爬虫项目的学习经历

python 大学习~

Posted by qisanchi on

场景

  • 想从网络中获取到一位作者在期刊上总共发表过多少文章
  • 想要搜索一篇文章,但是只记得作者和关键词
  • 想要根据期刊名,年份来返回这个期刊在这几年发表了多少文章

上面这些都可以通过网络搜索引擎做到,但是离开了搜索引擎,我们对这些数据就无从得知,所以我们需要一个数据库。那我们的数据从哪里来呢,这就是爬虫项目的用武之地的,我们从互联网上的公开接口获取到对应文章信息并且进行存储,对爬虫任务的进度进行管理,实时掌控数据获取进度。接下来我们明确一些概念

术语 描述
作者 撰写文章的个人,邮箱信息,可能关联多个期刊文章。
机构 机构名及机构所在位置
文章 期刊发表的学术成果,具有作者、通讯作者、机构、标题、摘要、发表的卷号期号、DOI、致谢、参考文献、关键词等信息。
关键词 描述文章核心主题的词汇,用于检索文章。
期刊 定期出版的学术刊物,包含多个卷(volume)和期(issue)。
爬虫任务 爬取目标数据源的单元操作,如“获取某作者的所有文章”。
任务进度 当前任务的完成状态,如页面处理数、提取数据量和入库数量。
数据源 提供目标信息的网络资源,如网页或 API。

提供一个查询页面,类似于 sciencedirect.com 的这个单页image-20241122004957858 可以网络搜索所有数据源然后聚合结果返回列表。用户可以选择这次查询结果创建一个爬虫任务,启动爬虫任务后可以将查询结果列表中的文章详情从数据源获取,序列化后写回我们的数据库。

并且提供一个本地查询页面,可以从我们数据库中查询各种文章相关信息和详情。

然后就是数据源、爬虫器以及爬虫任务的构建管理页面,负责对爬虫任务进行初始化、配置控制和状态可视化。

爬虫项目页面接口列表

接口 HTTP 方法 HTTP URI 说明
创建爬虫器 POST /crawler/spider
获取所有爬虫器 GET /crawler/spider
更新爬虫器 PUT /crawler/spider/{spider_id}
删除爬虫器 DELETE /crawler/spider/{spider_id}
创建序列器 POST /crawler/serializer
创建爬取任务 POST /crawler/task 2.根据查询结果调用对应爬虫器创建任务
获取爬取任务详情 GET /crawler/task/{task_id}
获取所有爬取任务 GET /crawler/task
停止爬取任务 POST /crawler/task/stop
开始爬取任务 POST /crawler/task/start 3.开始爬取任务,序列化提取 items 然后持久化存储
聚合查询 GET /crawler/search 1.网络查询所有数据源然后聚合结果返回列表
本地查询 GET /crawler/localsearch