我正在尝试使用SeleniumWebDriver获取1853行数据。在收到有关堆栈的一些帮助后,代码生成1080行,但在前400行从..09跳到..65之后,不会加载数据。例如,来自
1008 Cartesi CTSI/DAI $10,426 0.00% - Percentage Recently
1009 WETH WETH/LION $10,178 0.00% - Percentage Recently
1065 WETH WETH/DFIO $7,823 0.00% - Percentage Recently
1066 YAMv2 YAMv2/WETH $7,794 0.00% - Percentage 106 days ago
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://coinmarketcap.com/exchanges/uniswap-v2/')
total_height = int(driver.execute_script("return document.body.scrollHeight"))
for x in range(20):
time.sleep(2)
for i in range(1, total_height, 130):
time.sleep(1)
driver.execute_script("window.scrollTo(0, {});".format(i))
if x == 0:
driver.find_element_by_css_selector('div.cmc-cookie-policy-banner__close').click()
time.sleep(2)
driver.find_element_by_xpath('//button[text() = "Load More"]').click()
time.sleep(2)
first_column = driver.find_elements_by_css_selector('td.cmc-table__cell.cmc-table__cell--sticky.cmc-table__cell--sortable.cmc-table__cell--left.cmc-table__cell--sort-by__rank > div')
second_column = driver.find_elements_by_css_selector('div.cwwgik-0.bCvAgC')
third_column = driver.find_elements_by_css_selector('div.hmd6df-0.kCRNNr')
fourth_column = driver.find_elements_by_css_selector('div.cmc-table__column-market-pair-volume-24h')
fifth_column = driver.find_elements_by_css_selector('div.cmc-table__column-market-pair-volume-percent')
sixth_column = driver.find_elements_by_css_selector('td.cmc-table__cell.cmc-table__cell--sortable.cmc-table__cell--right.cmc-table__cell--sort-by__quote-usd-effective-liquidity > div')
seventh_column = driver.find_elements_by_css_selector('td.cmc-table__cell.cmc-table__cell--sortable.cmc-table__cell--right.cmc-table__cell--sort-by__fee-type > div')
eighth_column = driver.find_elements_by_css_selector('div.ghkc60-0.fLaXDt')
print(len(second_column))
it = 1
for i in range(len(second_column)):
it+=1
print(str(first_column[i].get_attribute("innerText")) + ' ' + str(second_column[i].get_attribute("innerText")) + ' ' + str(third_column[i].get_attribute("innerText")) + ' ' + str(fourth_column[i].get_attribute("innerText")) + ' ' + str(fifth_column[i].get_attribute("innerText")) + ' ' + str(sixth_column[i].get_attribute("innerText")) + ' ' + str(seventh_column[i].get_attribute("innerText")) + ' ' + str(eighth_column[i].get_attribute("innerText")))
print(it)
您可以通过请求获取所有数据,并点击页面使用的API端点。将limit参数更改为最大值(如果您需要的超出限制允许的范围,请使用循环并更改start参数)。在这种情况下,您可以通过以下方式获得所有结果:
您可以编写一个自定义函数,以每行一对的方式生成要输出的所有条目。TODO:列的一些格式,例如从数字到百分比,从json返回更多内容时删除任何您不想要的内容,重命名+根据需要重新排序任何内容
格式化和重命名示例:
*我假设
Volume (%)
是使用返回的json中的列中的值计算出来的度量值?你可以打印results[0]
并进行调查结果中的dict示例:
相关问题 更多 >
编程相关推荐