如何从加密网站抓取精确信息



我一直在做一个刮网器来抓取CoinEx网站,这样我就可以在我的程序中实时交易比特币。我抓取了这个链接,我希望得到所有与class_="ticker-item"相关的信息。但回报却是"——"。我想这与刮擦政策有关,但我有没有办法绕过这个。喜欢模仿普通浏览器的功能。我也尝试过使用头,但结果是一样的。我的代码:

import requests
from bs4 import BeautifulSoup
url="https://coinex.com/exchange/btc-usdt"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582'}
r = requests.get(url,headers = headers)
soup = BeautifulSoup(r.content, "html5lib")
trades = soup.find_all("div", class_="ticker-item")
print(trades[0].div.text)

结果:

--

问题似乎是您在浏览器中查看页面时看到的html与BeautifulSoup收到的html不同。原因可能是使用javascript调用自动报价器项目,这是浏览器为您做的事情,但BeautifulSoup没有。

如果你想获得数据,你最好找到他们的api(如果他们有)。否则,您可以使用inspect查看网页,并查看网络选项卡。在这里,你可以找到网站从哪里提取数据。这将是一些挖掘,但在那里的某个地方,你应该能够找到另一个链接,这是网站获得数据的地方。然后,您可以使用该链接。这样提取数据也会更容易。

如果你想要一个快速而肮脏的方法,你可以使用requests-html模块。这将为您呈现网页,包括所有脚本,因为它在底层使用了web浏览器。因此,输出将是相同的html,你会看到,如果你在浏览器中打开网站,你的提取方法应该在那里工作。当然,这有很多开销,因为它会生成web浏览器进程,但在某些情况下它是有用的。

您可以通过调用coinex Webservice的API获得大量数据我建议你看看coinexDocs

您可以访问交易数据,账户数据,市场数据。

也有WebSocket API

最新更新