برنامه نویسی

مقدمه ای بر Web Scraping – DEV Community

در زیر کاپوت

داستان شروع می شود من چند روز پیش تصمیم گرفتم که نوشتن مقالات فنی بیشتری را شروع کنم زیرا می خواهم توسعه Backend را تا سطح پیشرفته یاد بگیرم.

استراتژی ساده است، من کار جدیدی را در Node JS انجام خواهم داد و به اشتراک گذاری اطلاعات اولیه یا آموخته هایم در اینجا ادامه می دهم.

چگونه در حال یادگیری هستم، پاسخ ساده است، GPT چت و مستندات واقعی.

اولین موضوعی که انتخاب کردم، خراش دادن وب است زیرا می‌خواهم چیزی پیرامون آن بسازم و کاربردهای زیادی دارد که بعداً در این داستان به آنها خواهم پرداخت.

معرفی

Web scraping عبارت است از خراشیدن وب به واسطه نام آن و گرفتن عناصر DOM یا عناصر وب برای خواندن محتوا یا استخراج محتوا.

به عبارت ساده، فرآیند استخراج داده را وب اسکرپینگ می نامند.

چرا به اسکراپینگ وب نیاز داریم؟

اینکه چگونه این کار را انجام خواهیم داد، با استفاده از مهندسی معکوس به راحتی قابل درک است.

اگر بگویم می خواهید داده یا محتوا را از یک صفحه وب استخراج کنید؟

چگونه به عنوان یک توسعه دهنده فرانت اند پیش خواهید رفت؟

ساده است که هر صفحه وب دارای عناصر DOM است و آن عناصر DOM دارای داده یا محتوا هستند. ابتدا می‌توانیم عناصر DOM را استخراج کرده یا بخوانیم و در نهایت داده‌های مربوط به آنها را برای استخراج محتوای صفحه وب بخوانیم.

اسکراپینگ وب اینگونه انجام می شود.

اگر می خواهید یک وب اسکراپر باشید باید بدانید که عناصر DOM چیست و DOM چیست و فقط دانش اولیه کار خواهد کرد.

چگونه وب اسکرپینگ را انجام دهیم؟

منطق اجرای وب اسکرپینگ در بالا توضیح داده شده است که چگونه با استفاده از اسکریپت انجام شده است.

  • Node JS axios npm فایل html را با استفاده از URL واکشی می کند
  • ما عناصر DOM فایل html را با استفاده از jQuery تکرار می کنیم
  • محتوای عناصر DOM را بخوانید
  • استخراج و ذخیره محتوا البته، Node JS هزاران کتابخانه دیگر مانند Cheerio و Pupetter دارد که تکرار یا خراش دادن وب را به یک cakewalk تبدیل می‌کند.

دوست من بسته دیگری به نام Playwright را در زیر توصیه می کند، نمونه کد اصلی خراش دادن وب است.

const playwright = require('playwright');

const vgmUrl="https://www.vgmusic.com/music/console/nintendo/nes";

(async () => {
  const browser = await playwright.chromium.launch();
  const page = await browser.newPage();

  await page.goto(vgmUrl);

  const links = await page.$$eval('a', elements => elements.filter(element => {
    const parensRegex = /^((?!\().)*$/;
    return element.href.includes('.mid') && parensRegex.test(element.textContent);
  }).map(element => element.href));

  links.forEach(link => console.log(link));

  await browser.close();
})();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای توضیح اولیه،

  • ابتدا آدرس اینترنتی را که می خواهیم حذف کنیم تعریف کردیم
  • مرورگر را راه اندازی کنید
  • صفحه جدید را در مرورگر باز کنید و URL وب سایت را باز کنید
  • پیوندها را با استفاده از عبارت منظم فیلتر کنید و شامل پیوندی است که فقط حاوی href با مقدار mid. است
  • همه آن پیوندها را بخوانید و ذخیره کنید
  • بستن مرورگر روش ساده و اساسی برای حذف لینک های وب سایت که دارای ویژگی های خاصی مانند href شامل رشته mid و غیره است.

البته می‌توانید شرایط بیشتری را برای فیلتر کردن داده‌ها و خواندن سایر عناصر DOM مانند ورودی‌ها، چک باکس‌ها، عنوان‌ها، شرح‌ها و غیره اضافه کنید.

بسته هایی برای خراش دادن وب

جاوا اسکریپت

  • Cheerio
  • نمایشنامه نویس
  • عروسک گردان

پایتون

  • سوپ زیبا
  • سلنیوم
  • خراشیده

موارد لبه – وب سایت هایی با نام کلاس های پویا

مواردی وجود دارد که وب‌سایت‌های مبتنی بر محتوا با افزودن نام کلاس‌های پویا به هر عنصر DOM، اسکراپینگ وب را مسدود می‌کنند.

در آن صورت، ما با گزینه های خاصی که در زیر ذکر شده است، باقی مانده ایم

1. به دنبال ویژگی های جایگزین بگردید: اگر نام کلاس به صورت پویا تغییر می کند، به دنبال ویژگی های جایگزین مانند id، name، data-* و غیره باشید که در طول زمان ثابت می مانند. می توانید از این ویژگی ها برای شناسایی عناصری که می خواهید خراش دهید استفاده کنید.

  1. استفاده از انتخابگرهای CSS: انتخابگرهای CSS را می توان برای انتخاب عناصر HTML بر اساس ویژگی های آنها استفاده کرد. برای انتخاب عناصر بر اساس نام کلاس پویا می توانید از انتخابگرهایی مانند حاوی، شروع-با، پایان-با و غیره استفاده کنید.
  2. استفاده از عبارات منظم: اگر نام کلاس های پویا از یک الگوی خاص پیروی می کند، می توانید از عبارات منظم برای مطابقت با الگو و انتخاب عناصر استفاده کنید.
  3. از ابزار خراش دادن وب استفاده کنید: بسیاری از ابزارهای خراش دادن وب مانند BeautifulSoup، Scrapy، Selenium و غیره وجود دارند که می توانند نام کلاس های پویا را مدیریت کنند. این ابزارها دارای توابع داخلی هستند که می توانند عناصر را بر اساس ویژگی های آنها انتخاب کنند، الگوها را با استفاده از عبارات منظم و غیره مطابقت دهند.
  4. نظارت بر وب سایت: اگر نام کلاس های پویا به طور مکرر تغییر می کند، می توانید وب سایت را برای شناسایی الگوهای تغییرات نظارت کنید. این به شما کمک می کند تا کد اسکرپینگ خود را متناسب با آن به روز کنید.

کاربرد

خراش دادن داده ها مزایای زیادی دارد که در زیر تعریف شده است

  • مقایسه قیمت بین پلتفرم های تجارت الکترونیک
  • نمایه سازی داده ها
  • تجزیه و تحلیل سئو
  • استخراج داده ها … خیلی بیشتر

داده ها نفت هستند، بنابراین از هر کجا که آن را دریافت کنیم، نفت یا پول است.

از Data Scraping کسب درآمد کنید

  • داده های خراشیده خود را بفروشید
  • ابزارهایی برای از بین بردن وب سایت ها و فروش آن ابزارها بسازید
  • یک توسعه‌دهنده ضایعات وب‌سایت، فریلنسر یا تمام وقت شوید راه‌های متعددی وجود دارد، اما یک راه خوب این است که داده‌های ضایعاتی را بفروشید، مطمئن شوید که ابتدا نیازهای مشتری در مورد داده‌ها را درک کرده‌اید و سپس آن را بفروشید.

همچنین می‌توانید با استفاده از هوش مصنوعی ابزارهای خراش دادن را بسازید تا پلتفرم‌های انتخابی کاربر را حذف کنید یا حتی الگوریتم ضایعات یا پایگاه کد خود را بفروشید.

نتیجه

خراش دادن داده ها از بسیاری جهات بسیار مفید است به عنوان یک توسعه دهنده شخصی که می توانید داده ها را حذف و فیلتر کنید و آنها را بفروشید و به عنوان یک شرکت می توانید SEO را تجزیه و تحلیل کنید و قیمت های رقبا را مقایسه کنید.

الگوی نقشه راه Node JS – راهنمای جامع از سطح مبتدی تا پیشرفته برای Node JS

تا دفعه بعد روز خوبی داشته باشید مردم

شری

iHateReading

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا