需要帮助刮网页吗

2024-05-14 00:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始了一个小项目,我想检索硬币名称,价格,硬币市值,流通供应量和第一页上的前100枚硬币的数量。到目前为止,(在问了几个问题并获得了很好的输入后),我能够在第一页检索到所有的硬币名称。然而,就价格而言,我只知道前11个名字,而硬币市值则一无所获。我真的很想收集数据,这样我就可以开始做一些数据分析了,但我总是碰壁。有人能再给我指出正确的方向吗??我知道有一个api,但我想扩展我的知识

import requests
from lxml import html
from selenium import webdriver

url = "https://coinmarketcap.com/"

driver = webdriver.Chrome()

driver.get(url)

coin_name = [name.text for name in driver.find_elements_by_xpath('//td[3]/a[@class="cmc-link" and starts-with(@href, "/currencies/")]')]
print(coin_name)
print(len(coin_name))
price = [p.text for p in driver.find_elements_by_xpath('//td[4]/div/a[@class = "cmc-link" and contains(@href, "/markets/")]')]
print(price)
print(len(price))

market_cap = [m.text for m in driver.find_elements_by_xpath('//p[@class = "cmc-link" and contains(@style, "white-space:nowrap")]//p[@color="text"]')]

print(len(market_cap))

Tags: textnameinimportforbydriver硬币
1条回答
网友
1楼 · 发布于 2024-05-14 00:30:41

您需要将元素滚动到视图中。继续往下发送一页

import time

import requests
from lxml import html
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

url = "https://coinmarketcap.com/"

driver = webdriver.Chrome(executable_path='C:/chromedriver.exe')

driver.get(url)
driver.maximize_window()
for i in range(22):
    coin_name = driver.find_elements_by_xpath('//td[3]/a[@class="cmc-link" and starts-with(@href, "/currencies/")]')

    prices = driver.find_elements_by_xpath('//td[4]/div/a[@class = "cmc-link" and contains(@href, "/markets/")]')

    market_caps = driver.find_elements_by_xpath('//p[@class="sc-1eb5slv-0 kDEzev"]')
    
    html = driver.find_element_by_tag_name('html')
    html.send_keys(Keys.PAGE_DOWN)
    for coin, price, cap in zip(coin_name, prices, market_caps):
        print("Coin :", coin.text, "Price :", price.text, "Market_caps:", cap.text)

输出:-

CETH Price : $648.10 Market cap : $435,982,385,626
Coin : XRP
XRP Price : $0.573805 Market cap : $73,825,115,056
Coin : Tether
USDT Price : $1.00 Market cap : $26,053,047,457
Coin : Litecoin
LTC Price : $117.47 Market cap : $20,302,149,320
Coin : Bitcoin Cash
BCH Price : $350.85 Market cap : $7,768,463,654
Coin : Chainlink
LINK Price : $13.34 Market cap : $6,526,170,500
Coin : Cardano
ADA Price : $0.163470 Market cap : $5,300,831,845
Coin : Binance Coin
BNB Price : $34.82 Market cap : $5,085,969,556
Coin : Polkadot
DOT Price : $5.25 Market cap : $5,027,979,819
Coin : Stellar
XLM Price : $0.178429 Market cap : $4,683,566,948

相关问题 更多 >