import requests
from bs4 import BeautifulSoup
import csv
host = 'https://coinmarketcap.com'
headers = {'user_agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.174 YaBrowser/22.1.3.850 Yowser/2.5 Safari/537.36',
'accept': '*/*'
}
def get_html(url):
response = requests.get(url, headers=headers)
return response.text
def write_csv(data):
with open('data.csv', 'a') as f:
writer = csv.writer(f, delimiter=';')
writer.writerow( [data['name'],
data['symbol'],
data['price'],
data['link']
])
def get_data(response):
soup = BeautifulSoup(response,'lxml')
trs = soup.find('table').find('tbody').find_all('tr')
#print(len(trs))
count = 0
for tr in trs:
#if tr != None: #count <=9: # сделал ограничение потому что страница не прогружается и
# после 10 значения tr пустая и метод find выдаёт ошибку.
tds = tr.find_all('td')
link = host + tds[2].find('a').get('href')#_text().split()
name = tds[2].find('div', class_='sc-16r8icm-0').find('p', class_='sc-1eb5slv-0').text
#print(name)
symbol = tds[2].find('p', class_='sc-1eb5slv-0 gGIpIK coin-item-symbol').text
price = tds[3].find('span').text
data = { 'name' : name,
'symbol' : symbol,
'price' : price,
'link' : link
}
print(data)
#write_csv(data)
#count += 1
def main():
html = get_html(host)
get_data(html)
pass
if __name__ == '__main__':
main()