Maurizio-Ciullo

6.3 Scraping Conimarketcap 100 Coin Da Finire

Nov 6th, 2021 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. 6.3 Scraping Conimarketcap 100 Coin Da Finire
  2.  
  3. Da finire perchè devo creare un dataframe e poi la marketcap deve essere presa da tutti i primi 100 ticker
  4.  
  5.     Luca_Malinverni
  6. Ottobre 7
  7. Ciao,
  8.  
  9. Ho dato una piccola sistemata al codice, al posto di cercare sulla home iniziale vado a fare scraping nelle pagine delle singole coin
  10. (la lista la prendo dalla pagina di home, codice che avevi gia fatto ).
  11. Per ora non ho ricevuto errori cambiando la variabile agent in modo random, se riscontri problemi fammi sapere.
  12.  
  13. # Esercizio Scraping web Coinmarketcap
  14.  
  15. # Voglio La Posizione, Il Ticker, Market Cap E Prezzo
  16.  
  17. # Per ispezionar euna pagina elemento per elemento con il mouse control shift c
  18.  
  19.  
  20. import requests
  21.  
  22. pip install beautifulsoup4
  23. from bs4 import BeautifulSoup
  24.  
  25. pip install pandas
  26. import pandas as pd
  27.  
  28. import time
  29. from random import randrange
  30.  
  31. response = requests.get("https://coinmarketcap.com/")
  32.  
  33.  
  34. if response.status_code != 200:
  35.     print("ERRORE Download Pagina")
  36.  
  37. soup=BeautifulSoup(response.content, "html.parser")
  38.  
  39. tables = BeautifulSoup(response.content, "html.parser").find_all("table", {"class": "h7vnx2-2 czTsgW cmc-table"})
  40.  
  41. print(tables)
  42.  
  43. # Dalla 1a Riga prendo il testo per le colonne che mi interessano: Colonna1 Rank #
  44.  
  45. colonna1 = []
  46.  
  47. colonna2 = []
  48.  
  49. colonna3 = []
  50.  
  51. colonna4 = []
  52.  
  53. prezzi = []
  54.  
  55. ticker = []
  56.  
  57.  
  58. for table in tables:
  59.  
  60.     header=table
  61.  
  62.     if header.find("Name") == -1:
  63.  
  64.         continue
  65.  
  66.     rows=table.find_all("tr")
  67.  
  68.     for row in rows[0:1]:
  69.  
  70.         #print(row.text[0:1])
  71.  
  72.         column=row.text[0:1]
  73.  
  74.         colonna1.append(column)
  75.  
  76.         column=row.text[1:5]
  77.  
  78.         colonna2.append(column)
  79.  
  80.         column=row.text[5:10]
  81.  
  82.         colonna3.append(column)
  83.  
  84.         column=row.text[19:29]
  85.  
  86.         colonna4.append(column)
  87.  
  88.     for row in rows[1:]:
  89.  
  90.         #print(row.text)
  91.  
  92.         cells=row.find_all("td")
  93.  
  94.         #print(cells[3].text)
  95.  
  96.         price=(cells[3].text)
  97.  
  98.         prezzi.append(price)
  99.  
  100.         #print(cells[2].text)
  101.  
  102.         tickers=(cells[2].text)
  103.  
  104.         ticker.append(tickers)
  105.  
  106. # Colonne che ci serviranno in futuro:
  107.  
  108. colonna1
  109.  
  110. colonna2
  111.  
  112. colonna3
  113.  
  114. colonna4
  115.  
  116. prezzi
  117.  
  118. ticker
  119.  
  120. market_cap
  121.  
  122.  
  123.  
  124. market_cap = []
  125.  
  126.  
  127.  
  128. for table in tables:
  129.  
  130.     header=table
  131.  
  132.     if header.find("Name") == -1:
  133.  
  134.         continue
  135.  
  136.     rows=table.find_all("tr")
  137.  
  138.     count=0
  139.  
  140.  
  141.  
  142.     agents = {
  143.  
  144.     '0': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
  145.  
  146.     '1':"Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1",
  147.  
  148.     '2':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0",
  149.  
  150.     '3':"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  151.  
  152.     }
  153.  
  154.  
  155.  
  156.     for row in rows[1:]:
  157.  
  158.         #print(row.text)
  159.  
  160.         cells=row.find_all("td")
  161.  
  162.  
  163.  
  164.         links=cells[2].find_all('a')
  165.  
  166.         print(f"https://coinmarketcap.com{links[0]['href']}")
  167.  
  168.  
  169.  
  170.         #setto header per evitare che coinmarketcap mi blocchi per "spam"
  171.  
  172.         response = requests.get(f"https://coinmarketcap.com{links[0]['href']}",headers={'user-agent':agents[str(randrange(agents.__len__()))]})
  173.  
  174.  
  175.  
  176.         if response.status_code != 200:
  177.  
  178.             print("ERRORE Download Pagina")
  179.  
  180.         print(response.content)
  181.  
  182.  
  183.  
  184.         soup=BeautifulSoup(response.content, "html.parser")
  185.  
  186.  
  187.  
  188.         stats = soup.find_all("div", {"class": "statsValue"})
  189.  
  190.  
  191.  
  192.         market_cap.append(stats[0].text)
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. print(colonna1)
  203.  
  204. print(colonna2)
  205.  
  206. print(colonna3)
  207.  
  208. print(colonna4)
  209.  
  210. print("------")
  211.  
  212. print(prezzi)
  213.  
  214. print(prezzi.__len__())
  215.  
  216. print("------")
  217.  
  218. print(ticker)
  219.  
  220. print(ticker.__len__())
  221.  
  222. print("------")
  223.  
  224. print(market_cap)
  225.  
  226. print(market_cap.__len__())
  227.  
Add Comment
Please, Sign In to add comment