Scrape.do verwenden, um Zillow-Immobiliendaten in Google Sheets zu extrahieren

Fortgeschritten

Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 6 Nodes. Hauptsächlich werden If, Code, HttpRequest, GoogleSheets, ManualTrigger und andere Nodes verwendet. Mit Scrape.do Zillow-Immobilien Daten in Google Sheets extrahieren

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "02e782574ebb30fbddb2c3fd832c946466d718819d25f6fe4b920124ff3fc2c1",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "1562d037-9fa3-488f-a5e5-5aceaba3d3a1",
      "name": "Bei Klick auf 'Test workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -160,
        -160
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "873e06bf-4862-4d40-9b77-f08f1cf889c3",
      "name": "Zillow-URLs aus Google Sheets lesen",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        64,
        -160
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": false
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit#gid=0",
          "cachedResultName": "URLs"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit?usp=drivesdk",
          "cachedResultName": "outcome"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "mXr7C0bnwDQsB9Pd",
          "name": "VisaTrack Sheets"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "9dc0d92a-e56f-4b83-9dc5-986507a17eaf",
      "name": "Zillow-URL über Scrape.do scrapen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        288,
        -160
      ],
      "parameters": {
        "url": "={{ \"https://api.scrape.do/?url=\" + encodeURIComponent($json.URLs) + \"&super=true\" }}",
        "options": {
          "timeout": 120000,
          "redirect": {
            "redirect": {
              "followRedirects": false
            }
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth"
      },
      "credentials": {
        "httpQueryAuth": {
          "id": "HvTIKFnwg8rzo3iP",
          "name": "Query Auth account 2"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2",
      "name": "Zillow-Daten parsen",
      "type": "n8n-nodes-base.code",
      "position": [
        512,
        -160
      ],
      "parameters": {
        "jsCode": "// Parse HTML and extract Zillow property data\nconst item = $input.first();\n\n// Get HTML from Scrape.do response\nconst html = item.json.data || item.json.body || item.json;\n\n// Skip if no HTML content\nif (!html || typeof html !== 'string') {\n  return [];\n}\n\n// Get the original URL\nconst originalUrl = $('Read Zillow URLs from Google Sheets').first().json.URLs || 'N/A';\n\n// Extract Price - improved regex\nlet price = 'N/A';\n// Try multiple patterns\nconst pricePattern1 = html.match(/data-testid=\"price\"[^>]*>\\s*\\$?([0-9,]+)\\s*</)\nconst pricePattern2 = html.match(/\"price\"[^}]*\"value\"\\s*:\\s*\"?\\$?([0-9,]+)\"?/)\nconst pricePattern3 = html.match(/\\$([0-9]{3},[0-9]{3}(?:,[0-9]{3})?)(?!\\d)/)\n\nif (pricePattern1) {\n  price = '$' + pricePattern1[1].trim();\n} else if (pricePattern2) {\n  price = '$' + pricePattern2[1].trim();\n} else if (pricePattern3) {\n  price = pricePattern3[0].trim();\n}\n\n// Extract Address, City, and State\nlet street = 'N/A';\nlet city = 'N/A';\nlet state = 'N/A';\n\nconst addressMatch = html.match(/(\\d+\\s+[^,]+),\\s*([^,]+),\\s*(\\w{2})\\s+\\d{5}/);\nif (addressMatch) {\n  street = addressMatch[1].trim();\n  city = addressMatch[2].trim();\n  state = addressMatch[3].trim();\n}\n\n// Extract Days on Zillow\nlet daysOnZillow = 'N/A';\nconst daysMatch = html.match(/(\\d+)\\s+days?\\s*on\\s+Zillow/i);\nif (daysMatch) {\n  daysOnZillow = daysMatch[1];\n}\n\n// Extract Zestimate\nlet zestimate = 'N/A';\nconst zestimateMatch = html.match(/\\$[\\d,]+(?=\\s*Zestimate)/);\nif (zestimateMatch) {\n  zestimate = zestimateMatch[0];\n}\n\n// Return ONLY structured data\nreturn [{\n  json: {\n    URL: originalUrl,\n    Price: price,\n    Address: street,\n    City: city,\n    State: state,\n    'Days on Zillow': daysOnZillow,\n    Zestimate: zestimate,\n    'Scraped At': new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "436fbea1-b770-4ef3-8995-c79c6adf46a1",
      "name": "Ergebnisse in Google Sheets schreiben",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        720,
        -160
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "data",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "data",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2048497939,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit#gid=2048497939",
          "cachedResultName": "Outcome"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D2cU-NoW4ubx_IQ6piRRO3_d0Fx7jzdpWxKkBqEq7HU/edit?usp=drivesdk",
          "cachedResultName": "outcome"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "mXr7C0bnwDQsB9Pd",
          "name": "VisaTrack Sheets"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "00a73a1f-faf5-421e-abc4-a75b2b132c4a",
      "name": "Überprüfen, ob Scraping erfolgreich war",
      "type": "n8n-nodes-base.if",
      "position": [
        288,
        32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.statusCode }}",
              "value2": "200",
              "operation": "equals"
            }
          ]
        }
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2": {
      "main": [
        [
          {
            "node": "436fbea1-b770-4ef3-8995-c79c6adf46a1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "00a73a1f-faf5-421e-abc4-a75b2b132c4a": {
      "main": [
        [
          {
            "node": "a7cabb4d-1b33-46c4-a9e0-e70fe70e2ec2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1562d037-9fa3-488f-a5e5-5aceaba3d3a1": {
      "main": [
        [
          {
            "node": "873e06bf-4862-4d40-9b77-f08f1cf889c3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9dc0d92a-e56f-4b83-9dc5-986507a17eaf": {
      "main": [
        [
          {
            "node": "00a73a1f-faf5-421e-abc4-a75b2b132c4a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "873e06bf-4862-4d40-9b77-f08f1cf889c3": {
      "main": [
        [
          {
            "node": "9dc0d92a-e56f-4b83-9dc5-986507a17eaf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Content-Erstellung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes6
Kategorie2
Node-Typen5
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor

Hello, I'm Onur I've been working as a freelance software developer for about four years. In addition, I develop my own projects. For some time, I have been improving myself and providing various services related to AI and AI workflows. Both by writing low code and code. If you have any questions, don't hesitate to contact me.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34