Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from datetime import datetime
- import time, pytz
- import requests
- from lxml import html
- import matplotlib.pyplot as plt
- import pandas as pd
- session = requests.Session()
- url = 'https://coinmarketcap.com/all/views/all/'
- response = session.get(url).text
- etree = html.fromstring(response)
- slugs = etree.xpath('//tr/td[2]/a/@href')
- market_caps = {}
- for slug in slugs:
- print(slug)
- url = 'https://coinmarketcap.com{}historical-data/?start=20130428&end={}{:02d}{:02d}'.format(slug,*datetime.now(pytz.utc).timetuple())
- try:
- response = session.get(url).text.replace(',','').replace('-','')
- except Exception as e:
- print(e)
- continue
- etree = html.fromstring(response)
- data = zip(*[[x.text for x in etree.xpath('//table/tbody/tr/td[{}]'.format(col))] for col in range(1,8)])
- for date,open_value,high_value,low_value,close_value,volume_value,market_cap_value in data:
- date = datetime.strptime(date,'%b %d %Y')
- try:
- market_caps[date]
- except KeyError:
- market_caps[date] = {}
- try:
- market_caps[date][slug[12:-1]] = int(market_cap_value)
- except Exception as e:
- print(e)
- time.sleep(3)
- rank = pd.DataFrame.from_dict(market_caps,orient='index').rank(axis=1,ascending=False)
- rank = rank['0x'].loc['2017-08-16':]
- rank.plot()
- plt.savefig('output.pdf')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement