/JobNews-ElasticSearch-Scrapy_redis

项目整体分为scrapy-redis分布式爬虫爬取数据、基于ElasticSearch数据检索和前端界面展示三大模块。做此项目是为了熟悉scrapy-redis的基本流程,以及其背后的原理,同时熟悉ElasticSearch的使用。本项目可以作为一个基于ES存储的简单但是相对全面的全栈开发的Demo。项目中所采用的组件均在win10本地环境搭建(伪分布),旨在演示项目流程。你可以参考该项目,并将其扩展到多个主机上,实现分布式ES以及分布式Scrapy。

Primary LanguageCSS

Project Introduction

  • 项目整体分为scrapy-redis分布式爬虫爬取数据、基于ElasticSearch数据检索和前端界面展示三大模块。做此项目是为了熟悉scrapy-redis的基本流程,以及其背后的原理,同时熟悉ElasticSearch的使用。本项目可以作为一个基于ES存储的简单但是相对全面的全栈开发的Demo。项目中所采用的组件均在win10本地环境搭建(伪分布),旨在演示项目流程。你可以参考该项目,并将其扩展到多个主机上,实现分布式ES以及分布式Scrapy。

  • 项目涉及很多内容,鉴于篇幅有限,不便展开。本文尽可能清晰的说明项目框架、运行流程以及可能出现的问题。但是,相信你一定会遇到其他困难,你需要查阅文档(文末列出部分参考文档)。解决困难的过程 正是你进步的过程。

  • 共爬取125396组数据,本地以json格式存储一份(如有需要可以联系),ElasticSearch自动存储一份

Contact

  • 如果觉得本项目对你有帮助,请给个star鼓励一下

Project Structure

  • 项目主要分为下面两个部分
    • WebProject(web-elasticsearch端)
      web-elasticsearch端
    • example (scrapy-redis端)
      scrapy-redis-es_item

Tools

  • Redis
  • Scrapy
    • Scrapy-redis

Runtime Environment

  • Windows 10
  • Python 3.8.3
  • Redis 5.0 +
  • 关键包的及其版本
    • Django==2.1.3
    • elasticsearch==7.9.1
    • elasticsearch-dsl==7.3.0
    • scrapy-redis==0.6.8
    • ScrapyElasticSearch==0.9.2

How to run ?

  • scrapy-redis端(example)
    • 运行add_seed.py添加种子
      • 确保redis服务已经启动
      • 也可以通过 在redis-cli.exe 客户端执行如下命令添加种子
    • 运行 debug.py执行爬虫操作

    * 等待爬取结果 * 可以通过redis-desktop-manager查看redis数据库中处理结果
    * 使用kibana的console适应GET命令查看ElasticSearch数据存储情况 * 你需要确保kibana服务已经启动,然后访问本地5601端口进入kinaba console * 如 GET /jobnews/_count 查看数据总量
  • web-elasticsearch端(WebProject)
    • 在 Pycharm terminal 执行命令
      python manage.py runserver

    * 浏览器打开本地8000端口

Simple Display

  • 详情请参考根目录下的项目说明文档

  • 项目主界面

    项目主页

  • 检索结果展示界面

检索结果展示界面
检索结果展示界面

前端只是做了简单的搜索框以及分页展示,并没有过度追求美观。如果有需要,可以自行完善。

Q & A

Reference