如何抓取 MyAuto.ge 网站中 JavaScript 渲染的动态数据

2次阅读

如何抓取 MyAuto.ge 网站中 JavaScript 渲染的动态数据

myauto.ge 使用前端框架(如 react)构建,页面初始 html 仅含空 `

`,真实数据通过 ajax 从 api 接口(如 `https://api2.myauto.ge/ka/products/{id}`)异步加载。直接用 `requests` 获取 html 无法获取渲染后内容,需绕过 ssr,直连其后端 api。

MyAuto.ge 是一个典型的单页应用(SPA),其网页在首次加载时返回的是一个极简的 HTML 骨架(即“shell”),所有商品详情、价格、联系方式等核心数据均通过 javaScript 在浏览器中发起额外的 API 请求动态获取并渲染。这也是为什么你在 chrome 开发者工具中看到完整结构——那是 js 执行后的 dom;而 requests.get() 仅获取原始响应,不执行 JS,因此只拿到未渲染的初始 HTML。

✅ 正确做法:跳过 HTML 解析,直接调用其真实数据接口

通过分析浏览器 Network 面板(推荐过滤 XHR/Fetch),可发现该页面实际从以下地址加载结构化 json 数据:

https://api2.myauto.ge/ka/products/89476234

其中 89476234 即 URL 路径中的商品 ID。该接口返回标准 JSON,字段清晰、无需解析 HTML,稳定性与性能远优于模拟浏览器。

立即学习Java免费学习笔记(深入)”;

以下是推荐的 python 实现代码:

import requests import json  # 提取商品 ID(可从原始 URL 中正则或字符串分割获取) product_id = "89476234" api_url = f"https://api2.myauto.ge/ka/products/{product_id}"  headers = {     "User-Agent": "Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",     "Accept": "application/json",     "Referer": "https://www.myauto.ge/", }  try:     response = requests.get(api_url, headers=headers, timeout=10)     response.raise_for_status()  # 抛出 HTTP 错误异常     data = response.json()      # 示例:提取关键字段     info = data.get("data", {}).get("info", {})     title = info.get("title", "N/A")     price = info.get("price", "N/A")     phone = info.get("client_phone", "N/A")     city = info.get("city_name", "N/A")      print(f"标题: {title}")     print(f"价格: {price} ლარი")     print(f"联系电话: {phone}")     print(f"城市: {city}")  except requests.exceptions.RequestException as e:     print(f"请求失败: {e}") except json.JSONDecodeError:     print("响应非有效 JSON,请检查接口是否变更或需登录")

⚠️ 注意事项:

  • 不要硬编码 User-Agent:定期更新为当前主流浏览器 UA,避免被服务端识别为爬虫拦截;
  • 添加 Referer 和 Accept 头:部分 API 会校验来源,缺失可能导致 403;
  • ID 提取自动化:可通过 re.search(r’/pr/(d+)/’, url) 安全提取 ID,提升脚本通用性;
  • 错误处理必须完备:API 可能返回 404(商品下架)、429(限流)或结构变更,建议加入重试机制与日志;
  • 遵守 robots.txt 与网站条款:MyAuto.ge 未明确禁止公开数据爬取,但应控制请求频率(建议 ≥2 秒间隔),避免对服务造成压力。

? 总结:面对 SPA 网站,优先逆向分析 XHR 请求,而非强行渲染 HTML。直连 API 不仅高效、稳定,还能获得更干净、结构化的数据,是现代 Web Scraping 的最佳实践路径。

text=ZqhQzanResources