【问题标题】:Using selenium to retrieve data from webpage - not retrieving all data使用 selenium 从网页中检索数据 - 不检索所有数据
【发布时间】:2020-12-13 18:32:58
【问题描述】:

我正在尝试从 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()

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    试试这个代码行来获取页面上的所有值:

    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"]')]
    

    【讨论】:

    • 感谢您的提示,但您怎么知道这是正确的课程?我检查了来源,我看到了这个 cmc-link,但不确定这是指所有的硬币。另一件事,我可以看到名称中包含符号 Bitcoin/nBTC,有没有办法只检索名称?
    • 当我选择“复制 xpath”时,我得到这个 //*[@id="__next"]/div/div[2]/div/div/div[2]/table/tbody /tr[1]/td[3]/a
    • @Dfhaa_DK ,尝试更新。我不确定 - 只是尝试了几个谓词直到获得所需的输出
    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多