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

使用Python爬取Binance、Kucoin P2P价格失败,求解决方法及工具推荐

问题原因及解决方案

为什么爬不到数据?

主要有三个核心原因:

  • 动态内容渲染:Binance和Kucoin的P2P价格数据是通过JavaScript动态加载的,requests.get()只能获取页面的初始静态HTML,无法拿到JS渲染后的实际数据,所以BeautifulSoup自然找不到目标元素。你参考的教程网站是静态页面,所有内容直接写在HTML里,所以能直接爬。
  • 反爬拦截:交易所网站普遍有反爬机制,比如检查请求的User-Agent是否为真实浏览器标识,或者限制频繁请求。直接用requests发起请求可能被拦截,返回的页面没有有效数据。
  • 动态类名:页面元素的类名可能是前端框架(如React、Vue)动态生成的,刷新页面后类名会变化。你通过浏览器审查元素看到的css-1m1f8hn,在requests获取的静态HTML里根本不存在。

解决办法

  1. 改用支持JS渲染的工具
    用Selenium或Playwright模拟真实浏览器加载页面,等JS渲染完成后再提取数据。比如用Playwright的示例代码:

    from playwright.sync_api import sync_playwright
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto("https://p2p.binance.com/es/trade/all-payments/USDT?fiat=ARS")
        page.wait_for_selector("div.css-1m1f8hn")  # 等待目标元素加载
        elements = page.query_selector_all("div.css-1m1f8hn")
        for elem in elements:
            print(elem.text_content())
        browser.close()
    
  2. 调用官方API(推荐)
    交易所都提供公开的P2P/OTC API接口,直接调用API比爬页面更稳定、高效,还能避免反爬问题。API返回JSON格式数据,解析起来更简单。

  3. 优化请求头绕过反爬
    如果坚持用requests,可以添加真实的浏览器User-Agent和其他请求头,模拟浏览器请求:

    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"
    }
    page = requests.get(url, headers=headers)
    

    但这种方法对动态渲染的页面依然无效,只能解决部分反爬问题。

其他可用的Web Scraper工具

  • Selenium:老牌浏览器自动化工具,支持主流浏览器,文档丰富。
  • Playwright:微软推出的新一代自动化工具,API更简洁,支持多浏览器,内置等待机制,处理动态页面更省心。
  • Scrapy + Splash:Scrapy是Python主流爬虫框架,结合Splash服务可以渲染JS页面,适合大规模爬虫项目。
  • Pyppeteer:Chrome官方无头浏览器工具的Python封装,轻量级,操作简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:48:15