Я пытаюсь получить данные (название монеты, цену, капитализацию монетного рынка и оборотное предложение) с сайта coinmarketcap.com, но когда я запускаю приведенный ниже код, я получаю только 11 имен монет. Кроме того, я не могу получить другие данные. Я пробовал несколько вариантов, но ни один не увенчался успехом. Моя цель - хранить данные в фрейме данных, чтобы я мог их анализировать.
driver = webdriver.Chrome(r'C:\Users\Ejer\PycharmProjects\pythonProject\chromedriver')
driver.get('https://coinmarketcap.com/')
Crypto = driver.find_elements_by_xpath("//div[contains(concat(' ', normalize-space(@class), ' '), 'sc-16r8icm-0 sc-1teo54s-1 lgwUsc')]")
#price = driver.find_elements_by_xpath('//td[@class = "cmc-link"]')
#coincap = driver.find_elements_by_xpath('//td[@class = "DAY"]')
CMC_list = []
for c in range(len(Crypto)):
CMC_list.append(Crypto[c].text)
print(CMC_list)
#driver.get('https://coinmarketcap.com/')
#print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[contains(@class, 'cmc-table')]//tbody//tr//td/a//p[@color='text']")))[:50]])
driver.close()
Попробуйте эту строку кода, чтобы получить все значения на странице:
cryptos = [name.text for name in driver.find_elements_by_xpath('//td[3]/a[@class = "cmc-link" and starts-with(@href, "/currencies/")]//p[@color = "text"]')]
когда я выбираю "копировать xpath", я получаю это //*[@id = "__next"]/div/div[2]/div/div/div[2]/table/tbody/tr[1]/td [3]/а
@Dfhaa_DK, попробуйте обновить. Я не знал точно - просто попробовал несколько предикатов, пока не получил требуемый результат
Спасибо за подсказку, но как вы узнали, что это правильный класс? Я проверил источник и увидел эту ссылку cmc, но не уверен, что это относится ко всем монетам. Другое дело, я вижу, что имена включают символ Bitcoin/nBTC, есть ли способ получить только имя?