【发布时间】:2020-12-11 22:48:44
【问题描述】:
我正在尝试获取比特币的实时价格。比特币的价格在网站上几乎每 5 秒变化一次,但在我的代码中,它没有更新,并且与代码抓取的第一个价格保持不变。你能帮我解释一下为什么会这样吗?
import requests
from bs4 import BeautifulSoup
url = 'https://coinmarketcap.com/currencies/bitcoin/'
for i in range(100):
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(response.text, 'html.parser')
price = soup.find('span' ,attrs={"class" : "cmc-details-panel-price__price"})
print (price)
time.sleep(20)
我的输出:
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
<span class="cmc-details-panel-price__price">$18,106.79</span>
【问题讨论】:
-
该站点正在使用实时更新,我猜是一些 javascript 等。每次刷新站点时,您都会得到相同的值,然后站点触发触发器来更新值。由于您的请求无法等待或与网站上的 javascript 交互,因此它总是在加载时获得第一个值。
-
该数据来自 websocket,所以使用它。否则,您将浪费大量资源,并且您的价格会滞后于实时价格。
标签: python python-3.x web-scraping beautifulsoup python-requests