Advertisement
Guest User

Untitled

a guest
Aug 12th, 2018
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. from datetime import datetime
  2. import time, pytz
  3.  
  4. import requests
  5. from lxml import html
  6.  
  7. import matplotlib.pyplot as plt
  8. import pandas as pd
  9.  
  10. session = requests.Session()
  11. url = 'https://coinmarketcap.com/all/views/all/'
  12. response = session.get(url).text
  13. etree = html.fromstring(response)
  14. slugs = etree.xpath('//tr/td[2]/a/@href')
  15. market_caps = {}
  16. for slug in slugs:
  17.     print(slug)
  18.     url = 'https://coinmarketcap.com{}historical-data/?start=20130428&end={}{:02d}{:02d}'.format(slug,*datetime.now(pytz.utc).timetuple())
  19.     try:
  20.         response = session.get(url).text.replace(',','').replace('-','')
  21.     except Exception as e:
  22.         print(e)
  23.         continue
  24.     etree = html.fromstring(response)
  25.     data = zip(*[[x.text for x in etree.xpath('//table/tbody/tr/td[{}]'.format(col))] for col in range(1,8)])
  26.     for date,open_value,high_value,low_value,close_value,volume_value,market_cap_value in data:
  27.         date = datetime.strptime(date,'%b %d %Y')
  28.         try:
  29.             market_caps[date]
  30.         except KeyError:
  31.             market_caps[date] = {}
  32.         try:
  33.             market_caps[date][slug[12:-1]] = int(market_cap_value)
  34.         except Exception as e:
  35.             print(e)
  36.     time.sleep(3)
  37.  
  38. rank = pd.DataFrame.from_dict(market_caps,orient='index').rank(axis=1,ascending=False)
  39. rank = rank['0x'].loc['2017-08-16':]
  40. rank.plot()
  41. plt.savefig('output.pdf')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement