Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 6.3 Scraping Conimarketcap 100 Coin Da Finire
- Da finire perchè devo creare un dataframe e poi la marketcap deve essere presa da tutti i primi 100 ticker
- Luca_Malinverni
- Ottobre 7
- Ciao,
- Ho dato una piccola sistemata al codice, al posto di cercare sulla home iniziale vado a fare scraping nelle pagine delle singole coin
- (la lista la prendo dalla pagina di home, codice che avevi gia fatto ).
- Per ora non ho ricevuto errori cambiando la variabile agent in modo random, se riscontri problemi fammi sapere.
- # Esercizio Scraping web Coinmarketcap
- # Voglio La Posizione, Il Ticker, Market Cap E Prezzo
- # Per ispezionar euna pagina elemento per elemento con il mouse control shift c
- import requests
- pip install beautifulsoup4
- from bs4 import BeautifulSoup
- pip install pandas
- import pandas as pd
- import time
- from random import randrange
- response = requests.get("https://coinmarketcap.com/")
- if response.status_code != 200:
- print("ERRORE Download Pagina")
- soup=BeautifulSoup(response.content, "html.parser")
- tables = BeautifulSoup(response.content, "html.parser").find_all("table", {"class": "h7vnx2-2 czTsgW cmc-table"})
- print(tables)
- # Dalla 1a Riga prendo il testo per le colonne che mi interessano: Colonna1 Rank #
- colonna1 = []
- colonna2 = []
- colonna3 = []
- colonna4 = []
- prezzi = []
- ticker = []
- for table in tables:
- header=table
- if header.find("Name") == -1:
- continue
- rows=table.find_all("tr")
- for row in rows[0:1]:
- #print(row.text[0:1])
- column=row.text[0:1]
- colonna1.append(column)
- column=row.text[1:5]
- colonna2.append(column)
- column=row.text[5:10]
- colonna3.append(column)
- column=row.text[19:29]
- colonna4.append(column)
- for row in rows[1:]:
- #print(row.text)
- cells=row.find_all("td")
- #print(cells[3].text)
- price=(cells[3].text)
- prezzi.append(price)
- #print(cells[2].text)
- tickers=(cells[2].text)
- ticker.append(tickers)
- # Colonne che ci serviranno in futuro:
- colonna1
- colonna2
- colonna3
- colonna4
- prezzi
- ticker
- market_cap
- market_cap = []
- for table in tables:
- header=table
- if header.find("Name") == -1:
- continue
- rows=table.find_all("tr")
- count=0
- agents = {
- '0': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
- '1':"Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1",
- '2':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0",
- '3':"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
- }
- for row in rows[1:]:
- #print(row.text)
- cells=row.find_all("td")
- links=cells[2].find_all('a')
- print(f"https://coinmarketcap.com{links[0]['href']}")
- #setto header per evitare che coinmarketcap mi blocchi per "spam"
- response = requests.get(f"https://coinmarketcap.com{links[0]['href']}",headers={'user-agent':agents[str(randrange(agents.__len__()))]})
- if response.status_code != 200:
- print("ERRORE Download Pagina")
- print(response.content)
- soup=BeautifulSoup(response.content, "html.parser")
- stats = soup.find_all("div", {"class": "statsValue"})
- market_cap.append(stats[0].text)
- print(colonna1)
- print(colonna2)
- print(colonna3)
- print(colonna4)
- print("------")
- print(prezzi)
- print(prezzi.__len__())
- print("------")
- print(ticker)
- print(ticker.__len__())
- print("------")
- print(market_cap)
- print(market_cap.__len__())
Add Comment
Please, Sign In to add comment