1 ОС Windows
2 Версия Python (3.9)
3
4 Фрагмент кода Python 3.9
Проблема в том что после 10 строчки таблицы обрезает данные после поиска "TBody", и я не могу вытянуть остальные цены на крипту после 11 строчки. Подскажите пожалуйста. Сравнивал код страницы до 11 строчки и после, сделал корректировку по названию класса, так как он изменился.
2 Версия Python (3.9)
3
C:\Users\Artur>pip list
Package Version
------------------ ---------
beautifulsoup4 4.9.3
certifi 2021.5.30
charset-normalizer 2.0.4
click 8.0.1
colorama 0.4.4
defusedxml 0.7.1
fake-useragent 0.1.11
Flask 2.0.1
grab 0.6.41
idna 3.2
itsdangerous 2.0.1
Jinja2 3.0.1
lxml 4.6.3
MarkupSafe 2.0.1
pip 21.2.3
pyparsing 2.4.7
pytils 0.3
requests 2.26.0
selection 0.0.14
setuptools 56.0.0
six 1.16.0
soupsieve 2.2.1
urllib3 1.26.6
user-agent 0.1.9
weblib 0.1.30
Werkzeug 2.0.1
Package Version
------------------ ---------
beautifulsoup4 4.9.3
certifi 2021.5.30
charset-normalizer 2.0.4
click 8.0.1
colorama 0.4.4
defusedxml 0.7.1
fake-useragent 0.1.11
Flask 2.0.1
grab 0.6.41
idna 3.2
itsdangerous 2.0.1
Jinja2 3.0.1
lxml 4.6.3
MarkupSafe 2.0.1
pip 21.2.3
pyparsing 2.4.7
pytils 0.3
requests 2.26.0
selection 0.0.14
setuptools 56.0.0
six 1.16.0
soupsieve 2.2.1
urllib3 1.26.6
user-agent 0.1.9
weblib 0.1.30
Werkzeug 2.0.1
4 Фрагмент кода Python 3.9
Python:
import requests
from bs4 import BeautifulSoup
import csv
def get_html(url):
r = requests.get(url)
if r.ok:
return r.text
print(r.status_code)
def get_page_data (html):
soup = BeautifulSoup(html, 'lxml')
trs = soup.find('table',class_='h7vnx2-2 bFpGkc cmc-table').find('tbody')
for tr in trs:
tds = tr.find_all('td')
#print(tds)
try:
num = tr.find('div',class_="sc-1teo54s-3 etWhyV").text
print(num)
except:
num = ''
try:
name = tds[2].find('a',class_='cmc-link').get('href') # вытаскиваем название крипты
name = name[12:].replace('/','')
print(name)
except:
name =''
try:
# вытаскиваем сокращенное имя крипты по первому названию класса
symbol = tds[2].find('p', class_= 'sc-1eb5slv-0 gGIpIK coin-item-symbol').text
print(symbol)
except:
symbol = ''
try:
# вытаскиваем сокращенное имя крипты по второму названию класса
symbol1 = tds[2].find('span', class_= 'crypto-symbol').text
print(symbol1)
except:
symbol = ''
try:
price = tds[3].find('a', class_='cmc-link').text #$46,543.33
price = price.replace(',', '') #$46543.33
print(price[1:]) #46543.33
except:
price = ''
try:
url = 'https://coinmarketcap.com' + tds[2].find('a').get('href')
print(url)
except:
url = ''
#print(len(trs))
#print(trs[10])
def main():
url = 'https://coinmarketcap.com/'
get_page_data(get_html(url))
if __name__ == '__main__':
main()
Проблема в том что после 10 строчки таблицы обрезает данные после поиска "TBody", и я не могу вытянуть остальные цены на крипту после 11 строчки. Подскажите пожалуйста. Сравнивал код страницы до 11 строчки и после, сделал корректировку по названию класса, так как он изменился.