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

求助:使用Python和Beautiful Soup抓取隐藏手机号的正确方法

解决点击“显示”按钮获取手机号的爬虫方案

核心解决思路

这种得点击才显示的手机号,大多是通过**异步请求(AJAX)**加载的——说白了就是你点按钮的时候,网页偷偷发了个请求去服务器拿手机号。根本不用模拟浏览器逐个点击,直接找到这个请求的接口,用Python直接调用就行,效率高多了。

具体操作步骤(以你给的示例网站为例)

  1. 抓包找接口
    打开浏览器按F12开开发者工具,切到「网络」标签页,然后点页面上的“显示”按钮。这时候你能看到新出现的请求,找那种带api、phone或者车辆ID的接口,比如示例页面里的车辆ID是34684935,对应的接口大概是https://auto.ria.com/api/phones/get/34684935(具体以你抓包看到的为准)。

  2. 用Python直接请求接口拿数据
    用requests库就能搞定,不用Selenium,代码示例:

    import requests
    
    # 替换成你要爬的车辆ID
    car_id = "34684935"
    api_url = f"https://auto.ria.com/api/phones/get/{car_id}"
    
    # 带上请求头,避免被网站当成机器人拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    # 发送请求
    response = requests.get(api_url, headers=headers)
    # 解析返回的JSON数据
    phone_info = response.json()
    
    # 提取手机号
    if "phones" in phone_info:
        for item in phone_info["phones"]:
            print("手机号:", item["formattedNumber"])
    
  3. 批量爬取的优化
    如果要爬一堆车辆,先从列表页把所有车辆的ID都扒下来,然后循环调用上面的接口就行,比用Selenium逐个打开页面快太多了。

几点要注意的

  • 别请求太频繁,加个time.sleep(1)之类的延迟,不然容易被网站封IP。
  • 有些网站的接口可能需要带Cookie或者Token,抓包的时候记得把这些请求头信息也复制过去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:35:22