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

无需Selenium提取mubawab.ma页面点击显示按钮后的隐藏手机号

现有代码问题排查
  • URL与正则匹配逻辑错误:详情页URL末尾带多余换行符,且广告ID提取正则写为匹配(\d+)\.htm,但实际目标URL无.htm后缀,运行会直接抛出属性错误,无法拿到有效广告ID
  • 接口地址错误:写死的phone_url为残缺的JS代码片段,包含多余无效字符', 'adPage,也未预留广告ID的格式化占位符,拼接后的请求地址完全无效
  • 请求缺失必要校验头:站点对AJAX接口做了基础反爬校验,裸requests请求不带User-Agent、Referer、AJAX请求标识头会被直接拦截,无法拿到有效返回
  • 解析逻辑错误:接口返回内容为直接渲染手机号的HTML片段,不存在getTrackingPhone(...)的JS代码片段,该正则匹配完全无法命中
无Selenium可行实现方案

核心逻辑为从详情页URL提取广告ID,构造「显示号码」按钮触发的真实AJAX接口地址,携带和浏览器一致的请求头调用接口,直接从返回的HTML结构中提取手机号,全程无需浏览器自动化工具。

首先安装依赖:
pip install requests beautifulsoup4

可直接运行的代码如下:

import re
import requests
from bs4 import BeautifulSoup

# 目标详情页URL,去除多余换行
detail_url = "https://www.mubawab.ma/fr/a/7469776/beau-terrain-%C3%A0-la-vente-%C3%A0-hay-izihar-superficie-68-m%C2%B2-"

# 模拟真实浏览器请求头,绕过基础反爬校验
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Referer": detail_url,
    "X-Requested-With": "XMLHttpRequest"
}

# 从URL提取广告ID,修正正则匹配规则
ad_id_match = re.search(r"/a/(\d+)/", detail_url)
if not ad_id_match:
    raise ValueError("广告ID提取失败,请检查URL格式")
ad_id = ad_id_match.group(1)

# 构造显示号码按钮触发的真实AJAX接口
phone_api = f"https://www.mubawab.ma/fr/ajax/getPhone?ad_id={ad_id}"

# 发起请求获取返回内容
resp = requests.get(phone_api, headers=headers)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, "html.parser")

# 提取手机号和广告文本
phone_number = soup.select_one(".phone").get_text(strip=True)
ad_text = soup.select_one(".texto").get_text(strip=True) if soup.select_one(".texto") else "无广告描述"

print(f"广告描述:{ad_text}")
print(f"联系电话:{phone_number}")

注意事项

  • 若请求返回403状态码,将headers中的User-Agent替换为你本地浏览器的UA值即可
  • 短时间内不要高频发起请求,否则会触发站点IP临时封禁,可适当增加请求间隔
  • 接口返回的手机号为明文字段,不需要额外解密,直接提取标签文本即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:18:14