Bright Data를 사용하여 예정된 이벤트 스크래핑
중급
이것은AI분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 Code, Html, HttpRequest, GoogleSheets, ScheduleTrigger 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. 사용 Bright Data 및 n8n 의자동화事件发现
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "NY5tq9f8iYwpvPC6",
"meta": {
"instanceId": "60046904b104f0f72b2629a9d88fe9f676be4035769f1f08dad1dd38a76b9480"
},
"name": "Scrape_Upcoming_Events_using_bright_data",
"tags": [],
"nodes": [
{
"id": "5012cf3e-7fa6-4971-906b-760baeb51396",
"name": "트리거 - 주간 실행",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-440,
1160
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1
],
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "8962483b-d095-4ade-bf9c-c3bfa5fe1831",
"name": "bright data를 사용하여 이벤트 웹사이트 스크래핑",
"type": "n8n-nodes-base.httpRequest",
"position": [
-200,
1160
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "n8n_unblocker"
},
{
"name": "url",
"value": "https://www.eventbrite.com/d/online/technology--events/"
},
{
"name": "country",
"value": "us"
},
{
"name": "format",
"value": "raw"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer API_KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "12d62c8b-047d-4890-85f7-c9a8097fcc2d",
"name": "HTML 파싱 - 이벤트 카드 추출",
"type": "n8n-nodes-base.html",
"position": [
60,
1160
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "Title",
"cssSelector": "h3",
"returnArray": true
},
{
"key": "Date and Time",
"cssSelector": "div.Stack_root__1ksk7 > p:nth-of-type(1)",
"returnArray": true
}
]
}
},
"typeVersion": 1.2
},
{
"id": "df0d0e23-1afe-4c74-b408-e5b3123c13a4",
"name": "이벤트 데이터 형식화",
"type": "n8n-nodes-base.code",
"position": [
280,
1160
],
"parameters": {
"jsCode": "// Get the input data from the previous node\nconst inputData = items[0].json;\n\n// Access the arrays from the input object\nconst titles = inputData.Title;\nconst dates = inputData['Date and Time'];\n\n// Use a Set to track titles we've already processed to remove duplicates\nconst seenTitles = new Set();\nconst cleanedEvents = [];\n\n// Get the number of actual events (the input has duplicates)\nconst eventCount = dates.length;\n\nfor (let i = 0; i < eventCount; i++) {\n const title = titles[i];\n const date = dates[i];\n\n // 1. Skip if the title is empty or we've already processed this event\n if (!title || seenTitles.has(title)) {\n continue;\n }\n\n // 2. Filter out irrelevant \"Trends\" items that start with a number (e.g., \"1. Tickets\")\n if (/^\\d+\\.\\s/.test(title)) {\n continue;\n }\n \n // 3. Add the unique event to our results (without the URL)\n cleanedEvents.push({\n \"Title\": title,\n \"Date and Time\": date\n });\n\n // 4. Mark this title as seen to avoid adding it again\n seenTitles.add(title);\n}\n\n// Return the newly structured and cleaned array of event objects\nreturn cleanedEvents;"
},
"typeVersion": 2
},
{
"id": "c58d917f-d756-45ad-a38a-b52254250154",
"name": "Google 시트에 저장",
"type": "n8n-nodes-base.googleSheets",
"position": [
580,
1160
],
"parameters": {
"columns": {
"value": {
"Title": "={{ $json.Title }}",
"Date & Time": "={{ $json['Date and Time'] }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date & Time",
"type": "string",
"display": true,
"required": false,
"displayName": "Date & Time",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/157HRnzYP9IShr4jTQH7_y3r35cq2NVu0hv7kAW9kqn0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "157HRnzYP9IShr4jTQH7_y3r35cq2NVu0hv7kAW9kqn0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/157HRnzYP9IShr4jTQH7_y3r35cq2NVu0hv7kAW9kqn0/edit?usp=drivesdk",
"cachedResultName": "Events"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "r2mDaisH6e9VkwHl",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "ed7d1601-99b4-4191-b75c-cb7060a42bc5",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
460
],
"parameters": {
"color": 5,
"width": 440,
"height": 880,
"content": "## 🧩 SECTION 1: 🔄 **Trigger + Scrape Website Content**\n\n### 🧭 Purpose: Kickstart the automation & fetch data from the web\n\n---\n\n| 🔧 **Nodes Involved** | 🔹 `Schedule Trigger`<br>🔹 `HTTP Request (Bright Data Web Unlocker)` |\n| --------------------- | ----------------------------------------------------------------------- |\n| 📌 **Goal** | Automatically fetch webinar details from Eventbrite (or any event site) |\n| 🛠️ **How it works** | |\n\n1. **⏰ `Schedule Trigger`**\n This node runs the entire workflow at a preset time (e.g., daily at 8 AM). It ensures your automation runs hands-free — no manual clicking.\n\n2. **🌐 `HTTP Request`**\n This node uses **Bright Data's Web Unlocker** to bypass bot detection and scrape real event pages from protected websites like Eventbrite.\n The **POST** request is sent to `https://api.brightdata.com/request`, which returns **raw HTML** of the event listings page.\n\n💡 *Why Bright Data?*\nWebsites like Eventbrite use anti-bot systems. Bright Data safely navigates that with proxies + human-like browsing.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "24726d95-f802-45e8-868d-575ce6453580",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 6,
"width": 420,
"height": 1340,
"content": "## 🧩 SECTION 2: 🔍 **Extract & Structure Event Data**\n\n### 🧠 Purpose: Turn messy HTML into clean, usable event info\n\n---\n\n| 🔧 **Nodes Involved** | 🔹 `HTML Extract`<br>🔹 `Code Node` |\n| --------------------- | -------------------------------------------------------- |\n| 📌 **Goal** | Isolate event titles, times, and links from the raw HTML |\n| 🛠️ **How it works** | |\n\n1. **🧾 `HTML Extract`**\n This node lets you select elements from the HTML using **CSS selectors**, just like a web developer would.\n You extract:\n\n * `.eds-event-card-content__title` → **Title**\n * `.eds-event-card-content__sub-title` → **Date & Time**\n * `.eds-event-card-content__action-link[href]` → **Event URL**\n\n2. **🧮 `Code Node`**\n Here, we **loop through the extracted data** and format it into clean JSON objects:\n\n ```js\n return items[0].json.titles.map((title, i) => {\n return {\n json: {\n title,\n date: items[0].json.dates[i],\n link: items[0].json.links[i]\n }\n };\n });\n ```\n\n Result: You now have a list of clean, structured webinar entries.\n\n💡 *Why use a code node?*\nIt transforms raw scraped chunks into usable pieces ready for storage or integration.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "834b6789-b284-49e0-86ba-a9d803fb52aa",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
540
],
"parameters": {
"color": 3,
"width": 340,
"height": 800,
"content": "## 🧩 SECTION 3: 📄 **Store Events in Google Sheets**\n\n### 💾 Purpose: Save your scraped webinars into a spreadsheet\n\n---\n\n| 🔧 **Node Involved** | 🔹 `Google Sheets: Append` |\n| -------------------- | ----------------------------------------------- |\n| 📌 **Goal** | Automatically log each event into a spreadsheet |\n| 🛠️ **How it works** | |\n\n* This node appends each structured event entry to a connected **Google Sheet**.\n* Each row includes:\n 📌 `Event Title` | 📅 `Date & Time` | 🔗 `URL`\n* You can filter, sort, or share this sheet as a **database of upcoming webinars**.\n\n💡 *Why Google Sheets?*\nIt’s universal, easy to search/filter, and sharable with a team. No special tool or database needed.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "48ecec93-c46c-4398-ab14-bcfe617b0728",
"name": "스티키 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2140,
480
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "4bceecb8-56d2-47d7-8833-92f29af8f2fa",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2140,
820
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2298,
"content": "### 🎓 **Auto-Webinar Harvester**\n\n#### *Scrape Upcoming Events & Save to Google Sheets Automatically*\n\n> **Tagline:** “Your always-on assistant for discovering industry webinars — no clicks required.”\n> 🧠💻⚙️📅\n\n---\n\n## 🧩 SECTION 1: 🔄 **Trigger + Scrape Website Content**\n\n### 🧭 Purpose: Kickstart the automation & fetch data from the web\n\n---\n\n| 🔧 **Nodes Involved** | 🔹 `Schedule Trigger`<br>🔹 `HTTP Request (Bright Data Web Unlocker)` |\n| --------------------- | ----------------------------------------------------------------------- |\n| 📌 **Goal** | Automatically fetch webinar details from Eventbrite (or any event site) |\n| 🛠️ **How it works** | |\n\n1. **⏰ `Schedule Trigger`**\n This node runs the entire workflow at a preset time (e.g., daily at 8 AM). It ensures your automation runs hands-free — no manual clicking.\n\n2. **🌐 `HTTP Request`**\n This node uses **Bright Data's Web Unlocker** to bypass bot detection and scrape real event pages from protected websites like Eventbrite.\n The **POST** request is sent to `https://api.brightdata.com/request`, which returns **raw HTML** of the event listings page.\n\n💡 *Why Bright Data?*\nWebsites like Eventbrite use anti-bot systems. Bright Data safely navigates that with proxies + human-like browsing.\n\n---\n\n## 🧩 SECTION 2: 🔍 **Extract & Structure Event Data**\n\n### 🧠 Purpose: Turn messy HTML into clean, usable event info\n\n---\n\n| 🔧 **Nodes Involved** | 🔹 `HTML Extract`<br>🔹 `Code Node` |\n| --------------------- | -------------------------------------------------------- |\n| 📌 **Goal** | Isolate event titles, times, and links from the raw HTML |\n| 🛠️ **How it works** | |\n\n1. **🧾 `HTML Extract`**\n This node lets you select elements from the HTML using **CSS selectors**, just like a web developer would.\n You extract:\n\n * `.eds-event-card-content__title` → **Title**\n * `.eds-event-card-content__sub-title` → **Date & Time**\n * `.eds-event-card-content__action-link[href]` → **Event URL**\n\n2. **🧮 `Code Node`**\n Here, we **loop through the extracted data** and format it into clean JSON objects:\n\n ```js\n return items[0].json.titles.map((title, i) => {\n return {\n json: {\n title,\n date: items[0].json.dates[i],\n link: items[0].json.links[i]\n }\n };\n });\n ```\n\n Result: You now have a list of clean, structured webinar entries.\n\n💡 *Why use a code node?*\nIt transforms raw scraped chunks into usable pieces ready for storage or integration.\n\n---\n\n## 🧩 SECTION 3: 📄 **Store Events in Google Sheets**\n\n### 💾 Purpose: Save your scraped webinars into a spreadsheet\n\n---\n\n| 🔧 **Node Involved** | 🔹 `Google Sheets: Append` |\n| -------------------- | ----------------------------------------------- |\n| 📌 **Goal** | Automatically log each event into a spreadsheet |\n| 🛠️ **How it works** | |\n\n* This node appends each structured event entry to a connected **Google Sheet**.\n* Each row includes:\n 📌 `Event Title` | 📅 `Date & Time` | 🔗 `URL`\n* You can filter, sort, or share this sheet as a **database of upcoming webinars**.\n\n💡 *Why Google Sheets?*\nIt’s universal, easy to search/filter, and sharable with a team. No special tool or database needed.\n\n---\n\n## 🎯 Why This Workflow Is Powerful (Even for Beginners)\n\n| 🚀 Benefit | ✅ How It Helps You |\n| --------------------------------- | ----------------------------------------------------------------------- |\n| Zero manual scraping | Just set a schedule and forget — everything updates on its own |\n| Works with hard-to-scrape sites | Bright Data + Web Unlocker beats CAPTCHAs and blocks |\n| Clean, structured output | Easy to use data for marketing, lead gen, or syncing to Google Calendar |\n| Google Sheet as a source of truth | Everyone on your team can access and use the data |\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "197d2ec1-609e-4905-8671-e41ed6ceb92f",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
900,
540
],
"parameters": {
"color": 7,
"width": 380,
"height": 240,
"content": "## I’ll receive a tiny commission if you join Bright Data through this link—thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "b59d50da-e665-47a2-975b-432971342df5",
"connections": {
"df0d0e23-1afe-4c74-b408-e5b3123c13a4": {
"main": [
[
{
"node": "c58d917f-d756-45ad-a38a-b52254250154",
"type": "main",
"index": 0
}
]
]
},
"5012cf3e-7fa6-4971-906b-760baeb51396": {
"main": [
[
{
"node": "8962483b-d095-4ade-bf9c-c3bfa5fe1831",
"type": "main",
"index": 0
}
]
]
},
"12d62c8b-047d-4890-85f7-c9a8097fcc2d": {
"main": [
[
{
"node": "df0d0e23-1afe-4c74-b408-e5b3123c13a4",
"type": "main",
"index": 0
}
]
]
},
"8962483b-d095-4ade-bf9c-c3bfa5fe1831": {
"main": [
[
{
"node": "12d62c8b-047d-4890-85f7-c9a8097fcc2d",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 인공지능
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Bright Data를 통한 경쟁사 가격 모니터링
Bright Data와 n8n을 사용한 자동 경쟁사 가격 모니터링
If
Code
Html
+
If
Code
Html
15 노드Yaron Been
인공지능
자동화된 포럼 모니터링_via_Bright_data
Bright Data와 n8n을 사용하여 포럼 모니터링 자동화
Set
Code
Html
+
Set
Code
Html
17 노드Yaron Been
인공지능
연구 논문 크롤러에서 Google Sheets로
사용Bright Data및n8n자동화研究论文收集
Set
Code
Html
+
Set
Code
Html
12 노드Yaron Been
인공지능
CrunchBase 투자자 데이터
자동화投资者情报:CrunchBase로Google Sheets데이터采集器
Code
Http Request
Google Sheets
+
Code
Http Request
Google Sheets
8 노드Yaron Been
금융
로컬 이벤트를 Google 캘린더에 자동 동기화
n8n을 사용하여 로컬 이벤트를 Google 캘린더에 자동 동기화
Code
Html
Http Request
+
Code
Html
Http Request
11 노드Yaron Been
인공지능
Bright Data를 통한 자동화 프리랜서 잡 크롤러
Bright Data와 n8n을 사용한 자동 프리랜서 잡 찾기
Set
Html
Http Request
+
Set
Html
Http Request
11 노드Yaron Been
인공지능
워크플로우 정보
난이도
중급
노드 수11
카테고리1
노드 유형6
저자
Yaron Been
@yaron-nofluffBuilding AI Agents and Automations | Growth Marketer | Entrepreneur | Book Author & Podcast Host If you need any help with Automations, feel free to reach out via linkedin: https://www.linkedin.com/in/yaronbeen/ And check out my Youtube channel: https://www.youtube.com/@YaronBeen/videos
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유