На странице 100 данных необходимых для парсинга. Парсить пробую:
- Название кроптовалюты (парсится 10 из 100, а остальные попадают в блок except)
- Акроним (парсится 10 из 100, а остальные попадают в блок except)
- Ссылку (парсится 100 из 100)
- Стоимость (парсится 100 из 100)
Страница которую пробую парсить: https://coinmarketcap.com/ Код у 10 и 11 элемента не отличается, поэтому не понимаю в чем проблема. Напроимер 2 куска кода откуда я пытаюсь вытащить название криптовалюты: Dogecoin - пасится, Polkadot - не парсится
<div display="flex" class="sc-16r8icm-0 escjiH">
<a href="/currencies/dogecoin/" class="cmc-link">
<div class="sc-16r8icm-0 sc-1teo54s-0 dBKWCw">
<img class="coin-logo" src="https://s2.coinmarketcap.com/static/img/coins/64x64/74.png" loading="lazy" alt="DOGE logo">
<div class="sc-16r8icm-0 sc-1teo54s-1 dNOTPP">
<p font-weight="semibold" color="text" font-size="1" class="sc-1eb5slv-0 iworPT">Dogecoin</p>
<div data-nosnippet="true" class="sc-1teo54s-2 fZIJcI">
<div class="sc-1teo54s-3 etWhyV">10</div>
<p color="text3" class="sc-1eb5slv-0 gGIpIK coin-item-symbol" font-size="1">DOGE</p>
</div>
</div>
</div>
</a>
</div>
<div display="flex" class="sc-16r8icm-0 escjiH">
<a href="/currencies/polkadot-new/" class="cmc-link">
<div class="sc-16r8icm-0 sc-1teo54s-0 dBKWCw">
<img class="coin-logo" src="https://s2.coinmarketcap.com/static/img/coins/64x64/6636.png" loading="lazy" alt="DOT logo">
<div class="sc-16r8icm-0 sc-1teo54s-1 dNOTPP">
<p font-weight="semibold" color="text" font-size="1" class="sc-1eb5slv-0 iworPT">Polkadot</p>
<div data-nosnippet="true" class="sc-1teo54s-2 fZIJcI">
<div class="sc-1teo54s-3 etWhyV">11</div>
<p color="text3" class="sc-1eb5slv-0 gGIpIK coin-item-symbol" font-size="1">DOT</p>
</div>
</div>
</div>
</a>
</div>
Мой код:
def get_data(html):
soup = BeautifulSoup(html, 'lxml')
tablerows = soup.find('table', class_='cmc-table').find('tbody').find_all('tr')
for tablerow in tablerows:
td = tablerow.find_all('td')
try:
name = td[2].find('div', class_='dNOTPP').find('p').text
except:
name=''
try:
symbol = td[2].find('p', class_='coin-item-symbol').text
except:
symbol=''
try:
url = 'https://coinmarketcap.com'+td[2].find('a').get('href')
except:
url=''
try:
price = td[3].find('span').text
except:
price=''
#словарь
data={'name':name, 'symbol':symbol , 'url':url, 'price':price}
write_csv(data)
print(name)</code></pre>