为什么 BeatifulSoup 不能很好地与网站 Coinmarketcap 配合使用?

Why does not BeatifulSoup work well with the website Coinmarketcap?

我对以下代码有疑问。当我在 Google Colaboratory 中 运行 它时,我希望结果(来自 Coinmarketcap 网站的数字数据)会随着时间的推移而变化,因为它在网站上不断变化,但我总是得到一个固定的结果.我该如何解决这个问题?

非常感谢您的帮助:)

from bs4 import BeautifulSoup
import requests
while True:
     url="https://coinmarketcap.com/currencies/bitcoin/"
     html_content = requests.get(url).text

     soup = BeautifulSoup(html_content, "lxml")
     h = soup.find(class_='statsValue___2iaoZ').text.replace('$', '').replace('%','')
     print(f'\r{h}', end=" ")

880,648,583,648 (not changing):(

看起来,当页面首次加载时,它会加载一个设定值,然后进行更新。 我建议使用这个或另一个网站 https://coinmarketcap.com/api/documentation/v1/

值通过 javascript 动态更新。 BeautifulSoup 无法处理。您可以改用 Selenium:

!apt update
!apt install chromium-chromedriver
!pip install selenium

然后:

from selenium import webdriver
from bs4 import BeautifulSoup

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

url="https://coinmarketcap.com/currencies/bitcoin/"
wd = webdriver.Chrome('chromedriver',options=options)
wd.get(url)

while True:
     soup = BeautifulSoup(wd.page_source, "lxml")
     h = soup.find(class_='statsValue___2iaoZ').text.replace('$', '').replace('%','')
     print(f'\r{h}', end=" ")

这些值现在将根据需要更新。