نود HTML در N8N
نود HTML در n8n یکی از نودهای کاربردی برای کار با محتوای HTML است. با این نود میتوانید از داخل صفحات وب، ایمیلهای HTML، خروجی APIها یا فایلهای HTML، اطلاعات موردنیاز را استخراج کنید یا دادههای خود را به ساختار HTML قابل استفاده در ایمیل، گزارش و داشبورد تبدیل کنید.
معرفی نود در N8N
نود HTML در n8n برای پردازش، استخراج و تولید محتوای HTML استفاده میشود. این نود معمولاً زمانی به کار میرود که دادهای به شکل HTML دارید و میخواهید بخشهای مشخصی از آن مانند عنوان صفحه، لینکها، قیمت محصولات، متن مقاله، جدولها یا ویژگیهای خاص تگها را استخراج کنید.
- دستهبندی نود: Function / Action / Core Node
- نوع عملکرد: پردازش و تبدیل دادههای HTML
- کاربرد اصلی: استخراج داده از HTML با CSS Selector یا تبدیل دادههای ورودی به خروجی HTML
- اهمیت در ورکفلوها: این نود پلی بین دادههای خام وب و اتوماسیونهای قابل استفاده است؛ مثلاً میتواند خروجی HTTP Request را به داده ساختاریافته تبدیل کند.
در بسیاری از ورکفلوها، ابتدا با نود HTTP Request یک صفحه وب دریافت میشود، سپس نود HTML بخشهای موردنظر را استخراج میکند و در ادامه دادهها به Google Sheets، Airtable، Email، Telegram، Notion یا دیتابیس ارسال میشوند.
موارد استفاده
نود HTML برای سناریوهایی مناسب است که دادهها به صورت HTML در اختیار شما قرار دارند و باید از آنها اطلاعات دقیق و قابل پردازش استخراج شود.
استخراج اطلاعات از صفحات وب
- دریافت عنوان مقاله از تگ h1
- استخراج قیمت محصول از یک کلاس مشخص مانند .price
- دریافت لینک تصاویر از ویژگی src در تگ img
- استخراج لینکهای داخلی یا خارجی از تگهای a
- خواندن توضیحات محصول، نام نویسنده، تاریخ انتشار یا دستهبندی مطلب
ساخت ورکفلو اسکرپینگ ساده
یک سناریوی رایج این است که با HTTP Request صفحه محصول یک فروشگاه دریافت شود، سپس نود HTML قیمت محصول را استخراج کند و اگر قیمت از مقدار مشخصی کمتر بود، پیام هشدار در Telegram ارسال شود.
- HTTP Request: دریافت HTML صفحه محصول
- HTML: استخراج قیمت با CSS Selector
- Edit Fields: پاکسازی و تبدیل قیمت به عدد
- IF: بررسی کاهش قیمت
- Telegram یا Email: ارسال اعلان
استخراج اطلاعات از ایمیلهای HTML
بسیاری از ایمیلها با قالب HTML ارسال میشوند. با نود HTML میتوان از بدنه ایمیل، اطلاعاتی مانند شماره سفارش، مبلغ پرداخت، نام مشتری یا لینک پیگیری را استخراج کرد.
- Email Trigger یا Gmail Trigger: دریافت ایمیل جدید
- HTML: استخراج شماره سفارش از متن ایمیل
- Google Sheets: ثبت سفارش در فایل اکسل آنلاین
- Slack: اطلاعرسانی به تیم فروش
تبدیل دادهها به جدول HTML برای ایمیل
اگر خروجی چند آیتم از n8n دارید، میتوانید آنها را به جدول HTML تبدیل کنید و در متن ایمیل قرار دهید. این روش برای گزارشهای روزانه، لیست سفارشها، لاگ خطاها یا گزارش عملکرد بسیار کاربردی است.
ترکیب با نودهای دیگر
- HTTP Request + HTML: دریافت صفحه وب و استخراج داده
- HTML + Split Out: استخراج چند لینک یا چند آیتم و تبدیل آنها به آیتمهای جداگانه
- HTML + Code: پاکسازی پیشرفته دادههای استخراجشده
- HTML + Google Sheets: ذخیره اطلاعات استخراجشده در شیت
- HTML + Email Send: ارسال گزارش HTML به کاربران یا مدیران
پارامترها و تنظیمات
تنظیمات نود HTML بسته به نسخه n8n ممکن است کمی متفاوت باشد، اما ساختار اصلی آن معمولاً شامل انتخاب عملیات، منبع داده، فیلد HTML و مقادیر استخراجی است.
پارامتر Operation
- نام پارامتر: Operation
- نوع داده: انتخابی
- کاربرد: مشخص میکند نود چه کاری روی داده HTML انجام دهد.
- مقادیر رایج: Extract HTML Content، Convert to HTML Table
- مثال عملی: اگر میخواهید از صفحه وب قیمت محصول را استخراج کنید، گزینه Extract HTML Content را انتخاب کنید.
عملیات Extract HTML Content
این عملیات برای استخراج اطلاعات مشخص از یک متن HTML استفاده میشود. در این حالت معمولاً با CSS Selector مشخص میکنید کدام بخش از HTML باید خوانده شود.
پارامتر Source Data
- نام پارامتر: Source Data
- نوع داده: انتخابی
- کاربرد: تعیین میکند HTML از کجا خوانده شود؛ از یک فیلد JSON یا از داده Binary.
- مقادیر رایج: JSON، Binary
- مثال عملی: اگر خروجی نود HTTP Request در فیلد body ذخیره شده است، Source Data را روی JSON قرار دهید.
پارامتر JSON Property
- نام پارامتر: JSON Property
- نوع داده: String
- کاربرد: نام فیلدی را مشخص میکند که محتوای HTML داخل آن قرار دارد.
- مثال عملی: body یا html یا data
- نکته مهم: مقدار این فیلد باید یک رشته HTML معتبر باشد. اگر این فیلد وجود نداشته باشد یا مقدار آن خالی باشد، خروجی استخراجشده نیز خالی خواهد بود.
پارامتر Binary Property
- نام پارامتر: Binary Property
- نوع داده: String
- کاربرد: زمانی استفاده میشود که HTML به شکل فایل یا داده باینری وارد نود شده باشد.
- مثال عملی: data
- نکته مهم: این گزینه معمولاً وقتی کاربرد دارد که فایل HTML از مسیرهایی مانند Read/Write Files، ایمیل یا دانلود فایل دریافت شده باشد.
پارامتر Extraction Values
- نام پارامتر: Extraction Values
- نوع داده: مجموعه چندتایی
- کاربرد: تعریف میکند چه مقادیری از HTML استخراج شوند.
- مثال عملی: استخراج title، price و productLink از صفحه محصول در یک نود.
فیلد Key
- نام پارامتر: Key
- نوع داده: String
- کاربرد: نام فیلدی که مقدار استخراجشده در خروجی با آن ذخیره میشود.
- مثال عملی: title، price، link، imageUrl
- نکته مهم: بهتر است نام Key انگلیسی، کوتاه و بدون فاصله باشد تا در نودهای بعدی راحتتر استفاده شود.
فیلد CSS Selector
- نام پارامتر: CSS Selector
- نوع داده: String
- کاربرد: مشخص میکند کدام عنصر یا عناصر HTML باید انتخاب شوند.
- مثال عملی: h1 برای عنوان اصلی، .price برای قیمت، a.product-link برای لینک محصول، img.main-image برای تصویر اصلی
- نکته مهم: CSS Selector باید با ساختار واقعی HTML صفحه هماهنگ باشد. تغییر قالب سایت مقصد ممکن است باعث شود selector دیگر نتیجهای برنگرداند.
فیلد Return Value
- نام پارامتر: Return Value
- نوع داده: انتخابی
- کاربرد: تعیین میکند چه چیزی از عنصر انتخابشده برگردانده شود.
- مقادیر رایج: Text، HTML، Attribute
- مثال عملی: برای دریافت متن عنوان از Text استفاده کنید؛ برای دریافت آدرس لینک از Attribute و مقدار href استفاده کنید.
فیلد Attribute
- نام پارامتر: Attribute
- نوع داده: String
- کاربرد: وقتی Return Value روی Attribute باشد، نام attribute موردنظر را مشخص میکند.
- مثال عملی: href برای لینکها، src برای تصاویر، alt برای متن جایگزین تصویر، content برای meta tagها
- نکته مهم: اگر attribute روی عنصر انتخابشده وجود نداشته باشد، مقدار خروجی خالی خواهد بود.
فیلد Return Array
- نام پارامتر: Return Array
- نوع داده: Boolean
- کاربرد: مشخص میکند اگر چند عنصر با selector پیدا شد، همه آنها به صورت آرایه برگردند یا فقط یک مقدار بازگردانده شود.
- مثال عملی: برای استخراج همه لینکهای یک صفحه، Return Array را فعال کنید.
- نکته مهم: اگر خروجی آرایهای باشد و بخواهید روی هر مقدار جداگانه عملیات انجام دهید، میتوانید از نود Split Out یا Code استفاده کنید.
عملیات Convert to HTML Table
در برخی نسخهها و پیکربندیها، نود HTML امکان تبدیل دادههای ورودی به جدول HTML را فراهم میکند. این حالت برای ساخت گزارشهای خوانا و ارسال آنها در ایمیل کاربرد زیادی دارد.
پارامتر Input Data
- نام پارامتر: Input Data
- نوع داده: JSON Items
- کاربرد: دادههایی را مشخص میکند که باید به جدول HTML تبدیل شوند.
- مثال عملی: لیست سفارشها شامل customerName، orderId، totalPrice و status
پارامتر Output Property
- نام پارامتر: Output Property
- نوع داده: String
- کاربرد: نام فیلدی را مشخص میکند که جدول HTML تولیدشده در آن ذخیره میشود.
- مثال عملی: html، reportHtml، emailBody
پارامتر Include Headers
- نام پارامتر: Include Headers
- نوع داده: Boolean
- کاربرد: مشخص میکند نام ستونها در ردیف اول جدول نمایش داده شود یا نه.
- مثال عملی: برای گزارش مدیریتی، فعال بودن Header خوانایی جدول را بیشتر میکند.
پارامتر Columns یا Fields
- نام پارامتر: Columns / Fields
- نوع داده: انتخاب فیلدها یا String
- کاربرد: مشخص میکند کدام فیلدهای ورودی در جدول HTML قرار بگیرند.
- مثال عملی: نمایش فقط فیلدهای orderId، customerName، totalPrice و status و حذف فیلدهای داخلی مانند id یا createdAt
نکات مهم هنگام پیکربندی
- برای استخراج از صفحات وب، ابتدا خروجی HTTP Request را بررسی کنید و مطمئن شوید HTML واقعی در فیلد موردنظر قرار دارد.
- اگر صفحه با JavaScript ساخته میشود، ممکن است HTML دریافتی شامل محتوای نهایی نباشد.
- برای لینکها و تصاویر معمولاً باید Return Value را روی Attribute قرار دهید.
- برای متن ساده، Return Value را روی Text قرار دهید تا تگهای HTML حذف شوند.
- برای استخراج چند مقدار مشابه، Return Array را فعال کنید.
- اگر مقدار استخراجشده شامل فاصله، خط جدید یا کاراکترهای اضافی است، در نودهای بعدی با Edit Fields یا Code پاکسازی انجام دهید.
ورودیها و خروجیها
ورودی نود HTML معمولاً یک آیتم JSON است که داخل یکی از فیلدهای آن محتوای HTML قرار دارد. خروجی نیز یک آیتم JSON است که شامل فیلدهای استخراجشده یا HTML تولیدشده خواهد بود.
نمونه ورودی برای استخراج داده
{ "body": "<html><body><h1 class='product-title'>کیف چرمی</h1><span class='price'>۳,۲۰۰,۰۰۰ تومان</span><a class='buy-link' href='https://example.com/product/1'>خرید</a></body></html>"}نمونه تنظیمات استخراج
- JSON Property: body
- Key: title، CSS Selector: .product-title، Return Value: Text
- Key: price، CSS Selector: .price، Return Value: Text
- Key: buyLink، CSS Selector: .buy-link، Return Value: Attribute، Attribute: href
نمونه خروجی استخراج
{ "title": "کیف چرمی", "price": "۳,۲۰۰,۰۰۰ تومان", "buyLink": "https://example.com/product/1"}نمونه خروجی آرایهای
اگر بخواهید همه لینکهای یک صفحه را استخراج کنید، میتوانید selector را روی a قرار دهید، Return Value را روی Attribute و Attribute را روی href تنظیم کنید و Return Array را فعال کنید.
{ "links": [ "https://example.com/about", "https://example.com/products", "https://example.com/contact" ]}نمونه ورودی برای ساخت جدول HTML
[ { "orderId": "1001", "customerName": "علی رضایی", "totalPrice": "850000", "status": "paid" }, { "orderId": "1002", "customerName": "مریم احمدی", "totalPrice": "430000", "status": "pending" }]نمونه خروجی جدول HTML
{ "html": "<table><thead><tr><th>orderId</th><th>customerName</th><th>totalPrice</th><th>status</th></tr></thead><tbody><tr><td>1001</td><td>علی رضایی</td><td>850000</td><td>paid</td></tr><tr><td>1002</td><td>مریم احمدی</td><td>430000</td><td>pending</td></tr></tbody></table>"}نکات پیشرفته و ترفندها
استفاده دقیق از CSS Selector
کیفیت خروجی نود HTML به دقت CSS Selector بستگی دارد. بهتر است قبل از تنظیم نود، ساختار HTML را در مرورگر بررسی کنید و selector را روی دقیقترین عنصر ممکن قرار دهید.
- h1: انتخاب همه تگهای h1
- .price: انتخاب عنصرهایی با کلاس price
- #main-title: انتخاب عنصری با id برابر main-title
- a.product-link: انتخاب لینکهایی با کلاس product-link
- div.card .title: انتخاب عنوان داخل کارتها
- meta[name=”description”]: انتخاب meta description
استخراج meta tagها
برای استخراج توضیحات متا یا دادههای Open Graph میتوانید از selectorهای مخصوص meta استفاده کنید.
- CSS Selector: meta[name=”description”]
- Return Value: Attribute
- Attribute: content
برای تصویر Open Graph:
- CSS Selector: meta[property=”og:image”]
- Return Value: Attribute
- Attribute: content
پاکسازی داده بعد از استخراج
دادههای استخراجشده از HTML معمولاً نیاز به تمیزکاری دارند. برای مثال قیمت ممکن است شامل فاصله، واحد پول، کاما یا کاراکترهای فارسی باشد. برای پاکسازی میتوان از نود Edit Fields یا Code استفاده کرد.
{ "rawPrice": "۳,۲۰۰,۰۰۰ تومان", "cleanPrice": 3200000}ترکیب با Split Out برای پردازش آرایهها
اگر چند لینک، چند محصول یا چند عنوان استخراج کردهاید، خروجی ممکن است به صورت آرایه باشد. با Split Out میتوانید هر مقدار را به یک آیتم جداگانه تبدیل کنید و سپس روی هر آیتم عملیات جداگانه انجام دهید.
مدیریت صفحات چندبخشی و Pagination
برای سایتهایی که چند صفحه محصول یا مقاله دارند، میتوانید ابتدا لیست URLها را بسازید، سپس با Loop Over Items روی هر URL درخواست HTTP بزنید و با نود HTML دادهها را استخراج کنید.
- ساخت لیست URLها با Code یا Google Sheets
- ارسال هر URL به HTTP Request
- استخراج داده با HTML
- ذخیره نتیجه در دیتابیس یا Google Sheets
ساخت گزارش HTML برای ایمیل
برای ارسال گزارشهای خوانا، خروجی چند نود را به یک جدول HTML تبدیل کنید و آن را در بدنه ایمیل قرار دهید. این روش برای گزارش فروش روزانه، سفارشهای معلق، خطاهای سیستم و وضعیت کمپینها مفید است.
بهینهسازی عملکرد
- فقط فیلد HTML موردنیاز را به نود HTML بدهید و دادههای اضافه را حذف کنید.
- برای صفحات سنگین، قبل از پردازش، حجم HTML را بررسی کنید.
- در اسکرپینگ گسترده، از Wait برای جلوگیری از ارسال درخواستهای پشتسرهم استفاده کنید.
- در صورت تکرار زیاد روی سایتها، از کش یا ذخیره نتایج قبلی استفاده کنید.
- اگر فقط یک مقدار نیاز دارید، Return Array را غیرفعال نگه دارید.
محدودیتها و خطاها
محدودیتها
- نود HTML جاوااسکریپت صفحه را اجرا نمیکند؛ بنابراین محتوایی که بعد از بارگذاری با JavaScript ساخته میشود ممکن است در HTML اولیه وجود نداشته باشد.
- این نود جایگزین مرورگر واقعی یا ابزارهای پیشرفته اسکرپینگ مانند Puppeteer و Playwright نیست.
- اگر ساختار HTML سایت مقصد تغییر کند، selectorهای قبلی ممکن است دیگر کار نکنند.
- برای سایتهایی با CAPTCHA، Cloudflare یا محدودیت ضدربات، دریافت HTML ممکن است با مشکل مواجه شود.
- خروجی این نود به کیفیت HTML ورودی وابسته است؛ HTML ناقص یا خراب ممکن است باعث خروجی ناقص شود.
- اگر دادهها در iframe یا درخواستهای جداگانه API بارگذاری شوند، باید منبع اصلی داده را جداگانه پیدا و دریافت کرد.
خطای خالی بودن خروجی
یکی از رایجترین مشکلات این است که نود اجرا میشود اما مقدار خروجی خالی است.
- علت احتمالی: CSS Selector اشتباه است.
- راهحل: HTML دریافتی را بررسی کنید و مطمئن شوید عنصر موردنظر واقعاً در خروجی HTTP Request وجود دارد.
- علت احتمالی: محتوا با JavaScript ساخته شده است.
- راهحل: از API اصلی سایت، سرویسهای Headless Browser یا ابزارهای مرورگرمحور استفاده کنید.
خطای نبودن فیلد HTML
- علت احتمالی: نام JSON Property اشتباه وارد شده است.
- مثال: در تنظیمات body نوشته شده، اما خروجی نود قبلی در data قرار دارد.
- راهحل: خروجی نود قبلی را در بخش Output بررسی کنید و نام دقیق فیلد را وارد کنید.
خالی بودن Attribute
- علت احتمالی: Return Value روی Attribute تنظیم شده اما attribute انتخابی روی عنصر وجود ندارد.
- مثال: برای تگ a باید href انتخاب شود، اما اشتباهاً src وارد شده است.
- راهحل: ساختار عنصر انتخابی را بررسی کنید و attribute درست را وارد کنید.
مشکل کاراکترهای فارسی و Encoding
- علت احتمالی: پاسخ HTTP با encoding نامناسب دریافت شده است.
- راهحل: تنظیمات HTTP Request و هدرهای پاسخ را بررسی کنید. در صورت نیاز، داده را با نود Code تبدیل یا پاکسازی کنید.
مشکل با URLهای نسبی
گاهی لینکهای استخراجشده به صورت نسبی هستند، مانند /product/1. در این حالت باید دامنه اصلی را به ابتدای لینک اضافه کنید.
{ "relativeUrl": "/product/1", "absoluteUrl": "https://example.com/product/1"}خطا در ارسال HTML تولیدشده با ایمیل
- علت احتمالی: نود Email روی حالت متن ساده تنظیم شده است.
- راهحل: در نود ارسال ایمیل، گزینه مربوط به HTML Body را فعال کنید یا فیلد HTML را در بخش مناسب قرار دهید.
ایده ها
- مانیتور قیمت محصولات: دریافت صفحه محصول، استخراج قیمت با نود HTML، مقایسه با قیمت قبلی و ارسال هشدار کاهش قیمت در Telegram.
- استخراج خودکار مقالات رقبا: دریافت RSS یا صفحات وب، استخراج عنوان، نویسنده، تاریخ و خلاصه مقاله و ذخیره در Notion یا Google Sheets.
- گزارش روزانه سفارشها: تبدیل لیست سفارشهای فروشگاه به جدول HTML و ارسال گزارش روزانه برای مدیران از طریق ایمیل.
- پایش تغییرات صفحه: استخراج بخش خاصی از یک صفحه، ذخیره مقدار قبلی و ارسال اعلان در صورت تغییر محتوا.
- استخراج لینکهای مهم از ایمیلها: دریافت ایمیلهای HTML، استخراج لینک پرداخت، لینک پیگیری یا لینک دانلود و ثبت آن در CRM.
