使用coin360.com和coinmarketcap.com API填充即时本地数据库的简单刮刀

cryptocurrencies-scraper的Python项目详细描述


python:简单的加密货币刮刀

这是一个检索即时加密的简单模块 来自coin360.com和coinmarketcap api的BTC和美元货币值

如何使用

首先安装软件包

pip install cryptocurrencies_scraper

基本用法

fromcryptocurrencies_scraper.CurrencyServiceimportManagermanager=Manager()# Create a new instance of the Managermanager.update()# Ask the manager to update all currencies valuesmanager.all_currencies()# returns a dict that contain the currency name and symbol as key and currency information as a listmanager.get_curency('btc')# return the list of currency values retrived for bitcoin using symbolmanager.get_curency('bitcoin')# return the list of currency values retrived for bitcoin using name

添加您自己的刮刀

刮刀应该延伸CurrentPriceInterface。 下面是一个新刮刀的基本方案

classMySourceForCurrencies(CurrentPriceInterface):instance=NoneURL='https://api.mysource.com/v1/ticker/?limit=3000'NAME="mysource.com"@classmethoddefget_instance(cls)->'CurrenciesFromCoinMarketCap':ifcls.instanceisNone:cls.instance=MySourceForCurrencies()returncls.instancedef__init__(self):super().__init__()defupdate_currency_list(self):self.process_data(requests.get(self.URL).json())defprocess_data(self,json_data:json)->None:# Manipulate the the json to be Currency "parsable"c=Currency.parse_json(json_data,self.NAME)#When parsed, add it to the index NameIndexes.get_instance().add_to_index(c)returnNone

要使刮刀工作,您需要将其添加到管理器中

fromcryptocurrencies_scraper.CurrencyServiceimportManagermanager=Manager()manager.add_source(MySourceForCurrencies.get_instance())# you can also remove a sourcemanager.remove_source(MySourceForCurrencies.NAME)

然后在每个manager.update()调用时,将调用scraper并将货币添加到索引中

名称索引

这个类在内部用于索引所有货币。 添加新货币时,它将按符号和名称(符号大写,名称小写)分组。

唯一有用的方法是NameIndexes.get_instance().add_to_index(currency)。每次更新时,它都会被完全清除 从所有的旧价值观。

Currency

这是表示一种货币的对象,这里是结构

{"symbol":"BTC","name":"Bitcoin","valueUSD":5513,"valueBTC":1,"lastUpdate":1566531513813,"source":"coin360.com","changes":{"7d":-1,"24h":-5,"1h":-10}}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android RecyclerView和GridLayoutManager使项目跨越多行   java如何使程序也能识别大写字母?   带有单个模式字母的java DateTimeFormatter格式无法解析短月份名称   java包装JTextArea没有获得足够的空间/窃取空间   java我应该用@Component注释pojo类吗?   java在BST中查找比给定值更高的值的数量   java如何使JTextField接受以逗号作为分隔符的双值?   java Arm映像不适用于AVD(Android Studio)。CPU上没有VTX   如何知道一个文件是用java制作还是完成的?   JAVA安全AccessControlException:在浏览器上运行小程序时拒绝访问   JAVAlang.ArrayIndexOutOfBoundsException将图像读取为字节[]   java为什么toString()不总是自动调用   java Android最大数组列表大小   最终引用的优化在java中是如何工作的?   java两个随机数生成器(卡交易)