灵猴市集Linghou Market

瓜子二手车车源列表

瓜子二手车guazi-used-car-list

用途 读取当前瓜子二手车公开列表页,返回在售二手车条目,包括车源 ID、标题、价格、降价信息、里程、年份、城市、标签和详情页地址。 执行前提 请先打开瓜子二手车公开列表页,例如 https://www.guazi.com/bj/。脚本读取当前页面 DOM,不需要登录。若页面出现安全验证、验证码或风控提示,需要先在真实浏览器会话中完成验证后再重试。 参数 l…

二手车车源列表
版本1.0.0
扫描passed
更新2026-06-28
超时30000ms

匹配范围

*://*.guazi.com/*

排除范围

未声明

能力声明

dom.read

代码

源码已展开
1return await (async () => {2  const input = params && typeof params === "object" ? params : {};3  const limitValue = Number(input.limit);4  const limit = Math.max(1, Math.min(Number.isFinite(limitValue) ? Math.trunc(limitValue) : 20, 40));5  const clean = (value) => String(value == null ? "" : value).replace(/\s+/g, " ").trim();6  const sourceUrl = location.href;7 8  if (!/guazi\.com/.test(location.hostname)) {9    throw new Error("请先打开瓜子二手车公开列表页,例如 https://www.guazi.com/bj/。");10  }11 12  const pageText = clean(document.body?.innerText || "");13  if (/瑞数|reese84|captcha|滑动验证|安全验证|验证码|访问过于频繁/i.test(pageText)) {14    throw new Error("瓜子二手车页面出现安全验证或访问频率限制,请先在真实浏览器会话中完成验证。");15  }16 17  const links = Array.from(document.querySelectorAll('a[href*="/car-detail/c"]'));18  const rows = [];19  const seen = new Set();20 21  for (const link of links) {22    if (rows.length >= limit) break;23    const href = link.href || link.getAttribute("href") || "";24    const idMatch = href.match(/car-detail\/c(\d+)/);25    if (!idMatch) continue;26    const clueId = idMatch[1];27    if (seen.has(clueId)) continue;28 29    const rawText = String(link.innerText || link.textContent || "");30    if (!clean(rawText)) continue;31    const lines = rawText.split(/\n+/).map(clean).filter(Boolean);32    const title = lines[0] || "";33    if (!title) continue;34 35    const metaLine = lines.find((line) => /\d{4}年/.test(line) && /公里/.test(line)) || "";36    const metaParts = metaLine.split("|").map(clean).filter(Boolean);37    const year = (metaParts[0] || "").match(/(\d{4})年/)?.[1] || "";38    const mileage = metaParts.find((part) => /公里/.test(part)) || "";39    const city = metaParts[2] || metaParts.find((part) => !/\d{4}年|公里/.test(part)) || "";40    const priceLine = lines.find((line) => /已减/.test(line) && (/\d+(?:\.\d+)?\s*万/.test(line) || /\d+\s*元/.test(line)))41      || lines.find((line) => !/公里/.test(line) && (/\d+(?:\.\d+)?\s*万/.test(line) || /\d+\s*元/.test(line)))42      || "";43    const price = priceLine.match(/(\d+(?:\.\d+)?\s*万|\d+\s*元)/)?.[1]?.replace(/\s+/g, "") || "";44    const discount = priceLine.match(/已减\s*(\d+(?:\.\d+)?\s*万|\d+\s*元)/)?.[1]?.replace(/\s+/g, "") || "";45    const tags = lines.filter((line) => /^已检测$|^高保值$|^车主急售$|^纯电动$|^油电混动$|^插电混动$|^汽油$|^柴油$|^新能源$/.test(line));46 47    seen.add(clueId);48    rows.push({49      rank: rows.length + 1,50      clue_id: clueId,51      title,52      price,53      discount,54      mileage,55      year,56      city,57      tags,58      url: href.startsWith("http") ? href : new URL(href, location.origin).href,59    });60  }61 62  if (rows.length === 0) {63    throw new Error("没有从当前瓜子二手车列表页提取到车源,请确认页面是公开列表页并已加载完成。");64  }65 66  return {67    sourceUrl,68    count: rows.length,69    items: rows,70  };71})();