8
n8n 中文网amn8n.com

使用 Bright Data API 和 Google Sheets 集成的 Zillow 房产列表按位置和类别抓取器

高级

这是一个AI, Marketing领域的自动化工作流,包含 16 个节点。主要使用 If, Wait, FormTrigger, HttpRequest, GoogleSheets 等节点,结合人工智能技术实现智能自动化。 基于 Bright Data 和 Google Sheets 的 Zillow 房产抓取器,按位置筛选

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "0eFmaRUQnmJfkcaI",
  "meta": {
    "instanceId": "bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 Bright Data API 和 Google Sheets 集成的 Zillow 房产列表按位置和类别抓取器",
  "tags": [],
  "nodes": [
    {
      "id": "3ac2c390-45ef-4c40-99ba-7c41e387f88c",
      "name": "📝 表单触发器 - 开始房产搜索",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -2040,
        620
      ],
      "webhookId": "1485a089-e3a3-4aff-8043-9e2e24a24bad",
      "parameters": {
        "options": {},
        "formTitle": "Zillow Property Search",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Location",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Listing Category",
              "fieldOptions": {
                "values": [
                  {
                    "option": "House for rent"
                  },
                  {
                    "option": "House for sale"
                  }
                ]
              }
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e8976089-8572-45f0-b895-3517bf157801",
      "name": "📤 触发 Bright Data 抓取任务",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1800,
        620
      ],
      "parameters": {
        "url": "https://api.brightdata.com/datasets/v3/trigger",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": [\n    {\n      \"location\": \"{{ $json.Location }}\",\n      \"listingCategory\": \"{{ $json['Listing Category'] }}\",\n      \"HomeType\": \"\",\n      \"days_on_zillow\": \"\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "queryParameters": {
          "parameters": [
            {
              "name": "dataset_id",
              "value": "gd_lfqkr8wm13ixtbd8f5"
            },
            {
              "name": "include_errors",
              "value": "true"
            },
            {
              "name": "type",
              "value": "discover_new"
            },
            {
              "name": "discover_by",
              "value": "input_filters"
            },
            {
              "name": "limit_per_input",
              "value": "2"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1a3a3572-b249-4ca0-9b18-0fc2341aea93",
      "name": "表单提交说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2080,
        545
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 240,
        "content": "当用户通过表单提交位置和类别时启动工作流"
      },
      "typeVersion": 1
    },
    {
      "id": "902fe79f-8373-4a17-9e6a-a8449bcd48f5",
      "name": "API 触发器说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1850,
        545
      ],
      "parameters": {
        "color": 2,
        "width": 200,
        "height": 240,
        "content": "向 Bright Data API 发送搜索请求以触发 Zillow 数据抓取"
      },
      "typeVersion": 1
    },
    {
      "id": "eea4519d-eaca-4bba-b31b-67c12bdd943b",
      "name": "状态检查说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1610,
        545
      ],
      "parameters": {
        "color": 6,
        "width": 200,
        "height": 240,
        "content": "监控抓取任务状态并等待完成"
      },
      "typeVersion": 1
    },
    {
      "id": "0992cf05-aa2c-449f-af0f-c4cbd4cb340d",
      "name": "⏳ 检查抓取任务状态",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1560,
        620
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ce4357aa-e6de-4082-8cef-7cb3aa9727a2",
      "name": "等待计时器说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        660
      ],
      "parameters": {
        "color": 6,
        "width": 220,
        "height": 220,
        "content": "在重新检查抓取任务状态前等待 1 分钟"
      },
      "typeVersion": 1
    },
    {
      "id": "5be9e5cb-57d3-47db-ba39-543799a1ecad",
      "name": "⏱️ 重试前等待",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1100,
        720
      ],
      "webhookId": "7047efad-de41-4608-b95c-d3e0203ef620",
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "60878135-aa34-4b71-98ca-ac9dccc6b7e9",
      "name": "数据验证说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        420
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 220,
        "content": "验证抓取结果中是否找到房产数据"
      },
      "typeVersion": 1
    },
    {
      "id": "4b6df4c2-c72a-4a29-8077-17332184a038",
      "name": "数据检索说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        400
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "height": 220,
        "content": "使用快照 ID 检索实际的房产数据"
      },
      "typeVersion": 1
    },
    {
      "id": "fc1fcdd3-f3cf-43aa-ac63-bfc5270b3663",
      "name": "📥 获取房产列表数据",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -820,
        460
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer BRIGHT_DATA_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b980cf99-85cc-4dd9-9c41-405f20e45827",
      "name": "Google Sheets 保存说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        400
      ],
      "parameters": {
        "color": 3,
        "height": 220,
        "content": "将抓取的房产数据保存到您的 Google 表格"
      },
      "typeVersion": 1
    },
    {
      "id": "a9daf529-3b67-4f07-8d55-95af66861baf",
      "name": "📄 将房产数据保存到 Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -600,
        460
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.hdpUrl }}",
            "City": "={{ $json.city }}",
            "Country": "={{ $json.country }}",
            "Home Type": "={{ $json.homeType }}",
            "Zestimate": "={{ $json.zestimate }}",
            "Year Built": "={{ $json.yearBuilt }}",
            "Agent Phone": "={{ $json.listing_provided_by.phone_number }}",
            "Home Status": "={{ $json.homeStatus }}",
            "School Rating": "={{ $json.schools[0].rating }}",
            "Street Address": "={{ $json.address }}",
            "Interior Details": "={{ $json.interior_full[0].values }}"
          },
          "schema": [
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Agent Phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Agent Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Home Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Home Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Street Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Street Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zestimate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Zestimate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "School Rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "School Rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Year Built",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Year Built",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Home Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Home Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interior Details",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Interior Details",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Zillow",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0",
          "cachedResultName": "Zillow"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit",
          "cachedResultName": "Property Data Sheet"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets OAuth2"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "74062322-6e62-40d6-8876-dada77a319fc",
      "name": "✅ 检查抓取是否完成",
      "type": "n8n-nodes-base.if",
      "position": [
        -1320,
        540
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "35ed620d-b5d5-4e97-bcc5-52b283d85616",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "ready"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "25326b0a-7fb3-4ee5-9d6a-56c2d1d4cf41",
      "name": "📊 验证房产数据是否存在",
      "type": "n8n-nodes-base.if",
      "position": [
        -1080,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f01bd215-c406-493c-a6e4-2b8ec5686b44",
              "operator": {
                "type": "number",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.records }}",
              "rightValue": "={{ 0 }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3a7c4645-e5e9-4feb-8635-0953b6ae6a6a",
      "name": "Google 表格模板说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2080,
        300
      ],
      "parameters": {
        "color": 7,
        "width": 280,
        "content": "示例 Google 表格模板:"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1be06750-3f46-4f87-ab33-829b4e8f3079",
  "connections": {
    "⏱️ Wait Before Retry": {
      "main": [
        [
          {
            "node": "⏳ Check Scraping Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "⏳ Check Scraping Job Status": {
      "main": [
        [
          {
            "node": "✅ Check If Scraping Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "✅ Check If Scraping Complete": {
      "main": [
        [
          {
            "node": "📊 Validate Property Data Exists",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "⏱️ Wait Before Retry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📥 Fetch Property Listing Data": {
      "main": [
        [
          {
            "node": "📄 Save Property Data to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📊 Validate Property Data Exists": {
      "main": [
        [
          {
            "node": "📥 Fetch Property Listing Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📤 Trigger Bright Data Scraping Job": {
      "main": [
        [
          {
            "node": "⏳ Check Scraping Job Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "📝 Form Trigger - Start Property Search": {
      "main": [
        [
          {
            "node": "📤 Trigger Bright Data Scraping Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 人工智能, 营销

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量16
分类2
节点类型6
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流