内罗毕证券交易所网络刮板(Mongodb Atlas Hackathon 2022 on Dev)
#showdev #python #mongodb #atlashackathon22

我建造的

我使用python(特别是废纸框架和美丽的汤库),MongoDB地图集作为数据库,用于数据可视化的图表图和非洲人说SMS API的ATLAS图表。 Web刮板刮擦NSE网站的最新股价,并将其存储在MongoDB Atlas数据库中。然后从数据库中检索数据,并通过SMS发送给用户。

另外,我使用GitHub动作向项目中添加了CI/CD。 CI/CD管道运行测试并覆盖代码。它针对Python版本进行测试:3.8、3.9和3.10以及MongoDB版本:4.4、5.0、6.0。这样可以确保与不同版本的Python和MongoDB的广泛兼容性。

类别提交

选择自己的冒险

应用链接

GitHub Link

屏幕截图

Scrapy running

Scrapy

Charts-1

Charts-3

Sample Chart

HeatMap Chart

Atlas DB

Github Actions

描述

nse股票刮刀是一个网络刮板,可刮擦NSE网站的最新股价,并将其存储在MongoDB Atlas数据库中。它是使用开源工具的最终数据收集工具。

链接到源代码

GitHub logo KenMwaura1 / nse-stock-scraper

这是利用零工框架,mongodb和Africastalking的网络刮擦者,以获取内罗毕证券交易所上市公司的股价。该项目将通过Africastalking正确设置一旦通过SMS来存储股票名称和价格,并通过SMS通知。

Badges

Python application

徽章

forthebadge made-with-python GPL license Open Source Love svg1

每日股票价格刮板

网络刮板利用砂纸从内罗毕证券交易所刮擦现场股票价格 然后,每次刮擦后,价格将在Postgres数据库中保存,我们将Sqlalchemy用作ORM 和psycopg2作为数据库连接器。

可以找到随附的文章(第一部分)here 第二部分详细介绍部署和通知here

我们刮擦的实际平台是afx网站。

入门

先决条件

  • python和pip(我目前正在使用3.9.2)3.7上方的任何版本都可以工作。
  • An Africas Talking account
    • API密钥和您的帐户中的用户名。创建一个应用程序并注意API密钥。
  • PostgreSQL数据库
    • 可以在本地或通过docker安装。 此article是一个很棒的资源,讲述了如何将PostgreSQL和PGADMIN4安装为容器。

      创建一个数据库nse_scraper。使用SQL或三方客户,例如PGADMIN4或dbeaver

安装

克隆这个

允许许可证

背景

我最近一直在了解有关金融市场和数据分析的更多信息。我想建立一些可以帮助我了解股票市场的信息,还可以帮助我练习网络刮擦技巧。我还想了解有关MongoDB Atlas以及如何使用它来存储数据的更多信息。我的目标之一是利用非洲交谈发送通知短信。

我如何建造它

我使用Python和Scrapy框架构建了网络刮板。我用美丽的汤来解析HTML数据。我使用MongoDB Atlas存储数据。我使用Atlas图表可视化数据。我使用非洲人通过短信将数据发送给用户。

scrapy作为框架,可以强制执行某些方法来构建您的代码,从而更容易维护和扩展。它还具有许多内置功能,可以轻松执行分页,遵循链接和存储数据之类的事情。使用MongoDB地图集很容易,因为它具有免费的层,可让您存储多达512 MB的数据。我使用Atlas图表可视化收集到MongoDB Atlas的数​​据。

在这种情况下,我们为afx网站创建了一个简单的蜘蛛。蜘蛛负责爬网站并从中提取数据。蜘蛛还负责遵循链接并爬行其他页面。从网站提取数据后,它将存储在MongoDB地图集中。

然后,我们使用Atlas图表中的数据来生成不同类型的可视化,并将它们存储在仪表板中。如下所示:

Sample Dashboard

关于当前运行的数据库,Atlas仪表板实时提供了很多有用的指标。

Atlas metrics

其他资源/信息

Scrapy

MongoDB Atlas

Atlas Charts

Africas Talking

Beautiful Soup

Python

GitHub Actions

该项目的下一步是什么?

  • 修复错误以及设置一个CRON作业以在一天中的特定时间将数据发送给用户。
  • 将项目部署到云托管平台,即Google Cloud,Azure等
  • 向项目添加更多功能,例如通过电子邮件将数据发送给用户。
  • 使用Docker进行集装。

让我知道您对该项目的看法。我很想听听您的反馈。谢谢!
随时在TwitterLinkedIn上与我联系。

Next-time