سورس کد خزنده وب (Web Crawler) در اکسل با VBA برای استخراج لینک‌های داخلی سایت

توضیحات کوتاه و لینک دانلود
امروز در این پست برای شما کاربران عزیز وبسایت فایل سحرآمیز یک سورس کد خزنده وب با VBA در اکسل | استخراج لینک‌های داخلی سایت را آماده دانلود قرار داده ایم

دانلود - Download

لیست فایل های مشابه

توضیحات کامل در مورد فایل

دانلود سورس کد خزنده وب (Web Crawler) در اکسل با VBA برای استخراج لینک‌های داخلی سایت

در این پست، قصد داریم یک کد بسیار کاربردی و جالب به زبان VBA را معرفی کنیم که با اجرای آن در محیط اکسل، می‌توانید یک خزنده وب (Web Crawler) ساده بسازید. این خزنده به‌طور خودکار به یک آدرس سایت مشخص شده متصل می‌شود، صفحات داخلی آن را بررسی می‌کند و تمامی لینک‌هایی که به دامنه اصلی تعلق دارند را استخراج و در یک شیت مجزا ذخیره می‌کند. این ابزار برای کسانی که به دنبال تحلیل ساختار لینک‌های داخلی سایت، بررسی وضعیت سئو یا جمع‌آوری اطلاعات اولیه از صفحات وب هستند، می‌تواند بسیار مفید باشد.

ساختار اصلی کد بر پایه دو مفهوم مهم "صف لینک‌ها برای بررسی" و "لینک‌های بازدیدشده" طراحی شده است. ابتدا آدرس اصلی سایت توسط کاربر وارد می‌شود، سپس برنامه این لینک را به صف اضافه کرده و شروع به بازدید از آن می‌کند. محتوای HTML هر صفحه توسط شیء MSXML2.ServerXMLHTTP دریافت می‌شود و لینک‌های داخل آن با استفاده از شیء htmlfile استخراج می‌گردند. تنها لینک‌هایی که به دامنه اصلی تعلق دارند وارد صف می‌شوند و در نتیجه از رفتن به سایت‌های خارجی جلوگیری می‌شود.

یکی از نکات مهم این کد، استفاده از ساختار زمان‌بندی Application.OnTime است که باعث می‌شود خزیدن به صورت مرحله‌به‌مرحله و با فاصله زمانی مشخص انجام شود. این تأخیر قابل تنظیم بوده و از طریق TextBox دوم در فرم (UserForm1) توسط کاربر تعیین می‌شود. به این ترتیب، می‌توان سرعت خزیدن را کنترل کرد تا فشار زیادی بر سرور سایت هدف وارد نشود و از بلاک شدن IP جلوگیری شود. همچنین در هر مرحله، لینک جدید در شیت اکسل با قالب‌بندی مناسب ثبت شده و ظاهر شیت نیز به‌صورت زیبایی طراحی شده است.

از قابلیت‌های جانبی این ابزار می‌توان به توقف خزیدن در هر لحظه اشاره کرد. با اجرای ماکروی StopCrawling، فرآیند خزیدن متوقف می‌شود و پیغامی برای کاربر نمایش داده می‌شود. علاوه بر این، اگر لینک ورودی خالی باشد یا خطایی در بارگذاری صفحات رخ دهد، کد دارای مدیریت خطا بوده و کاربر را مطلع می‌سازد. همچنین با اجرای ماکرو، در صورت وجود شیت قبلی با نام "Crawled Links"، آن شیت حذف و نسخه جدیدی با ساختار بهینه ایجاد می‌شود.

نمونه تصاویر در زمان اجرا

این کد VBA که برای اجرای آن به یک فایل اکسل و یک فرم به نام UserForm1 نیاز دارید، یک خزنده وب (Web Crawler) ساده را در محیط Excel پیاده‌سازی می‌کند. این خزنده با دریافت آدرس یک وب‌سایت، شروع به بازدید از صفحات لینک‌شده داخل آن می‌کند و تمام لینک‌هایی که به دامنه اصلی تعلق دارند را جمع‌آوری کرده و در یک شیت ذخیره می‌کند.


🎯 کاربرد کد

با استفاده از این ابزار می‌توانید:

  • لینک‌های داخلی یک وب‌سایت را جمع‌آوری کنید.

  • ساختار لینک‌دهی صفحات را بررسی نمایید.

  • داده‌های اولیه برای سئو یا تحلیل ساختار سایت جمع‌آوری کنید.


🧩 اجزای اصلی کد

1. متغیرهای سراسری

Dim http As Object, html As Object, links As Object, link As Object Dim url As String, baseUrl As String Dim visitedLinks As Collection, queue As Collection Dim ws As Worksheet, rowCounter As Long Dim nextRun As Date, t As Integer

این متغیرها برای مدیریت صف لینک‌ها، بررسی لینک‌های بازدیدشده، زمان‌بندی، و ارتباط با وب استفاده می‌شوند.


2. تابع Contains

Function Contains(col As Collection, key As String) As Boolean

بررسی می‌کند که آیا یک لینک قبلاً در مجموعه (Collection) اضافه شده یا نه. برای جلوگیری از بازدید تکراری لینک‌ها استفاده می‌شود.


3. زیرروال StopCrawling

Sub StopCrawling()

برای توقف خزیدن به صورت دستی با مقداردهی t = 0 استفاده می‌شود.


4. زیرروال StartCrawling

Sub StartCrawling()

شروع فرآیند خزیدن است. ابتدا آدرس سایت را از UserForm1.TextBox1 دریافت می‌کند، شیت قبلی را حذف کرده و یک شیت جدید با عنوان Crawled Links ایجاد می‌کند، سپس تابع CrawlNextLink را برای شروع خزش فراخوانی می‌کند.


5. زیرروال BeautifySheet

Sub BeautifySheet()

ظاهر شیت را زیبا می‌کند: تنظیم عرض ستون‌ها، رنگ‌بندی راه‌راه سطرها، قفل کردن ردیف اول، اعمال فیلتر و تنظیم رنگ عنوان.


6. زیرروال CrawlNextLink

Sub CrawlNextLink()

مهم‌ترین بخش کد. در هر مرحله:

  • یک لینک از صف (queue) برداشته می‌شود.

  • در صورتی که قبلاً بازدید نشده، با استفاده از MSXML2.ServerXMLHTTP.6.0 محتوای HTML دریافت می‌شود.

  • لینک‌های موجود در آن استخراج و به صف اضافه می‌شوند (در صورتی که به دامنه اصلی تعلق داشته باشند).

  • لینک فعلی در شیت ذخیره می‌شود.

  • اجرای مرحله بعدی خزیدن با استفاده از Application.OnTime و با تأخیر زمانی مشخص (از TextBox2) برنامه‌ریزی می‌شود.


🧪 پیش‌نیازها

  • ایجاد فرم UserForm1 با دو تکست‌باکس:

    • TextBox1: برای وارد کردن آدرس سایت (مثلاً https://example.com)

    • TextBox2: برای وارد کردن تأخیر بین خزش‌ها (بر حسب ثانیه)

  • فعال بودن مرجع Microsoft HTML Object Library برای تجزیه‌ی HTML (در صورت استفاده از htmlfile)

برای شما کاربران عزیز پیشنهاد دانلود داده می شود.

برای دریافت ( سورس کد خزنده وب (Web Crawler) در اکسل با VBA برای استخراج لینک‌های داخلی سایت ) کلیک فرمایید

نظرات کاربران