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

如何使用Google Apps Script抓取网页剩余3个目标数据点?

提取网页剩余数据点的解决方案

方法一:正则表达式匹配(快速实现,依赖页面结构)

直接在原有代码基础上添加正则规则,匹配你需要的另外3个数据点(假设为价格、卧室数、浴室数,可根据实际需求调整正则):

function extractDataFromUrl() {
  var url = "https://h3p1c2bj.r.us-east-1.awstrack.me/L0/https:%2F%2Fduproprio.com%2Fen%2F1037325%3Futm_source=alerts%26utm_medium=email%26utm_campaign=qc-en-property%26utm_content=photo-propriete-2/1/0100018712213f2c-181f0f4a-951f-46e5-bc01-c2dc66276552-000000/ObF-c1cmnxhP6DpL7H7kY5QaxH0=314";
  
  // 获取重定向后的页面HTML内容
  var response = UrlFetchApp.fetch(url);
  var htmlContent = response.getContentText();
  
  // 提取房源编号(保留原逻辑)
  const idRegex = /#(\d+)/;
  const propertyId = idRegex.exec(htmlContent) ? idRegex.exec(htmlContent)[1] : null;
  
  // 提取价格(匹配$开头的千分位格式金额)
  const priceRegex = /(\$\d{1,3}(?:,\d{3})+)/;
  const price = priceRegex.exec(htmlContent) ? priceRegex.exec(htmlContent)[1] : null;
  
  // 提取卧室数量(忽略大小写,兼容单复数)
  const bedroomRegex = /(\d+)\s+bedroom(s)?/i;
  const bedrooms = bedroomRegex.exec(htmlContent) ? bedroomRegex.exec(htmlContent)[1] : null;
  
  // 提取浴室数量(忽略大小写,兼容单复数)
  const bathroomRegex = /(\d+)\s+bathroom(s)?/i;
  const bathrooms = bathroomRegex.exec(htmlContent) ? bathroomRegex.exec(htmlContent)[1] : null;
  
  // 输出所有提取结果
  Logger.log(`房源编号: ${propertyId}`);
  Logger.log(`价格: ${price}`);
  Logger.log(`卧室数: ${bedrooms}`);
  Logger.log(`浴室数: ${bathrooms}`);
}

方法二:DOM解析(更稳定,不易受页面小改动影响)

正则容易因页面结构微调失效,用DOM解析直接定位页面元素更可靠。需要先通过浏览器开发者工具查看目标数据对应的元素选择器(比如class、id),再替换代码中的选择器:

function extractDataWithDOM() {
  var url = "https://h3p1c2bj.r.us-east-1.awstrack.me/L0/https:%2F%2Fduproprio.com%2Fen%2F1037325%3Futm_source=alerts%26utm_medium=email%26utm_campaign=qc-en-property%26utm_content=photo-propriete-2/1/0100018712213f2c-181f0f4a-951f-46e5-bc01-c2dc66276552-000000/ObF-c1cmnxhP6DpL7H7kY5QaxH0=314";
  
  var response = UrlFetchApp.fetch(url);
  var htmlContent = response.getContentText();
  
  // 解析HTML为DOM对象
  var parser = new DOMParser();
  var dom = parser.parseFromString(htmlContent, 'text/html');
  
  // 替换为实际页面的元素选择器(需自行查看网页结构)
  var propertyId = dom.querySelector('.property-reference')?.textContent.trim().replace('#', '') || null;
  var price = dom.querySelector('.price-tag')?.textContent.trim() || null;
  var bedrooms = dom.querySelector('.feature-item--bedrooms .feature-item__value')?.textContent.trim() || null;
  var bathrooms = dom.querySelector('.feature-item--bathrooms .feature-item__value')?.textContent.trim() || null;
  
  // 输出结果
  Logger.log(`房源编号: ${propertyId}`);
  Logger.log(`价格: ${price}`);
  Logger.log(`卧室数: ${bedrooms}`);
  Logger.log(`浴室数: ${bathrooms}`);
}

注意事项

  1. 正则表达式需根据网页实际HTML结构调整,如果网站更新布局,正则可能需要重新编写
  2. DOM解析的关键是获取正确的元素选择器:打开目标网页,右键点击数据点→检查,复制对应的class或id
  3. 如果遇到跨域或反爬限制,可能需要在UrlFetchApp.fetch中添加请求头(模拟浏览器UA):
var options = {
  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'
  }
};
var response = UrlFetchApp.fetch(url, options);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:06:59