You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取网页时提取文本更新频率远低于网页实际更新频率

核心原因
  • 你用requests发起请求拿到的内容,是网站服务器提前生成好的静态页面快照,不是浏览器中打开后持续动态刷新的实时页面。
  • 打个简单的比方:你每2秒发一次请求,相当于每隔2秒找网站前台要一张打印好的价格告示单,但前台的告示单是每隔1-2分钟才统一重印一批,你要得再频繁,拿到的大多是同一批次印的旧单子,价格自然很久才会变一次。
  • 你在浏览器里看到的几秒一变动的价格,就像门店墙上挂的电子价签,会自动每隔几秒同步最新价格。这个自动刷新的动作是浏览器在页面加载完成后额外执行的,requests只能拿到刚发起请求时前台返回的纸质宣传单,不会等着后续电子屏的内容更新,所以你爬下来的价格和眼睛看到的实时页面根本对不上。
修正方案

靠反复爬取整个静态页面的方式既拿不到实时价格,请求频率太高还容易被网站拦截。你可以直接获取网页用来更新电子价签的数据源,不需要解析复杂的HTML页面结构,就能拿到和网页显示完全同步的最新价格,修改后的可运行代码如下:

import time
import requests

i = 2
while i <= 500:
    # 请求网页更新价格用的数据源
    resp = requests.get(
        'https://api.coinmarketcap.com/data-api/v3/cryptocurrency/listing?start=1&limit=2&convert=USD',
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'}
    )
    price_data = resp.json()
    # 提取以太坊的最新美元价格
    eth_price = price_data['data']['cryptoCurrencyList'][1]['quotes'][0]['price']
    # 格式化为和网页展示一致的带美元符号的字符串
    print(f"${eth_price:,.2f}")
    i += 2
    time.sleep(2)
  • 这个方案每次请求拿到的都是服务器返回的最新价格,没有冗余的页面内容,响应速度比爬整个HTML页面快很多,能完全匹配你2秒获取一次最新价格的需求。后续你要把数据写入CSV、添加交易策略模拟逻辑,直接在拿到eth_price数值后加对应代码即可。

内容的提问来源于stack exchange,提问作者Cai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:09:18