【发布时间】:2021-10-24 05:12:43
【问题描述】:
看我需要这种加密货币的价格 https://dex.guru/token/0x68848e1d1ffd7b38d103106c74220c1ad3494afc-bsc 使用此代码:
import lxml
import requests
from lxml import html
html = requests.get('https://dex.guru/token/0x68848e1d1ffd7b38d103106c74220c1ad3494afc-bsc')
doc = lxml.html.fromstring(html.content)
new_releases = doc.xpath('//div[@class="0.00047061210058486165"]/text()')[0]
print(new_releases)
但是我得到了这个错误
IndexError: list index out of range
我知道它会引发错误,因为列表是空的,但为什么列表是空的?
请帮忙,我从刮痧开始。
【问题讨论】:
-
页面内容由 JavaScript 生成。 lxml 不是网络浏览器,因此您可能需要 Selenium (selenium.dev) 之类的东西。
-
是的,@mzjn 是对的,这个网站也是 cloudflare 保护的。
-
@ce.teuf 您如何找出受 Cloudflare 保护的网站?那个网站呢?poocoin.app/tokens/0x68848e1d1ffd7b38d103106c74220c1ad3494afc我只需要硬币的价格。
-
@AntonEitenbichler 当您转到 F12-> Network-> XHR 时,您可以看到一个 POST 请求,该请求返回您要查找的价格。但在标头响应中,您可以看到:“server : cloudflare”。我做了一些尝试,它带回了一个 403 页面(在 cloudflare 页面上有一个重定向:“这是一个受 cloudflare 保护的服务......你的 IP :......”或类似的东西)。
-
@AntonEitenbichler 我相信您需要找到一个允许 api 调用的站点。仅供参考,DexGuru 说:docs.dex.guru/api
标签: python web-scraping lxml lxml.html