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

时间:2021-07-24 09:27:00

标签: python web-scraping beautifulsoup python-requests

我一直在开发一个网络爬虫来抓取 CoinEx 网站,这样我就可以在我的程序中进行比特币的实时交易。我抓取了 this 链接,我希望获得与 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)

结果:

--

1 个答案:

答案 0 :(得分:0)

问题似乎是你在浏览器中查看页面时看到的html与BeautifulSoup收到的html不一样。原因可能是使用 javascript 调用代码项,这是浏览器为您做的事情,但 BeautifulSoup 没有。

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

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