1401/02/30
  1401/02/30

آموزش گرفتن اتوماتیک قیمت محصولات از سایت های مختلف

وب اسکرپینگ با گوگل شیت

ممکن است شما محصولاتی را در سایت خود داشته باشید که از وبسایت‌های دیگر برداشته باشید. هنگامیکه تعداد محصولات زیاد می‌شود، عملا بررسی قیمت تک تک محصولات دشوار شده و ممکن است مشتری کالایی را ثبت کند که قیمت آن، تغییر کرده باشد.

در این صورت، کاربر درخواست خود را ثبت کرده، هزینه‌ی آن را پرداخت کرده و حال تیم پشتیبانی باید به ایشان اطلاع دهد که قیمت افزایش یافته است. برای جلوگیری از این کار، روشی را به شما آموزش خواهیم داد که با استفاده از گوگل شیت که مشابه اکسل است، یک دیتابیس ساده ایجاد کنید و قیمت‌ها را به صورت آنی رصد نمایید.

آموزش گرفتن اتوماتیک قیمت محصولات از سایت های مختلف
    Add a header to begin generating the table of contents

    وب اسکرپینگ چیست؟

    وب اسکرپینگ به عمل بررسی وبسایت‌ها و ثبت داده‌ها گفته می‌شود. کراول کردن نیز به معنای خزش در صفحات مختلف وب است. برای اینکه از قیمت لحظه‌ای کالاها اطلاع داشته باشیم، باید وبسایت‌های مرجع را به صورت آنی بررسی نماییم. برای مثال، اگر مرجع قیمت لپتاپ یا دوربین را سایت دیجی کالا در نظر بگیریم، با وب اسکرپینگ محصولات مختلف این وبسایت، همواره مطمئن خواهیم شد که کالایی که قصد فروش آن‌را داریم، گران نشده و آن را به قیمت کمتر نمی‌فروشیم.

    کاری که قرار است در این مقاله یاد بگیریم، نوعی وب اسکریپینگ Web Scraping یا کراول Crawl ساده‌ی چند سایت است. اگرچه برای وب اسکرپینگ می‌توان درخواست کدنویسی داد و اپلیکیشن آماده دریافت کرد، اما شاید روش ساده‌ای که در این مقاله به شما آموزش می‌دهم، کارتان را راه انداخته و نیازی به پرداخت هزینه نباشد.

    آیا وب اسکرپینگ با گوگل شیت ممکن است؟

    بله. گوگل شیت که به نوعی همانند اکسل بوده، اما مزایای بیشتری دارد، امکان خواندن داده‌های مشخص از صفحات وبسایت را ارائه کرده است. در گوگل شیت، شما می‌توانید با یک دستور ساده به نام Importxml، قیمت را از وبسایت‌های مختلف خوانده و با قیمتی که خودتان در وبسایت ارائه کرده‌اید، مقایسه کنید. در این مقاله، این کار را به صورت گام به گام بررسی خواهیم کرد.

    خواندن قیمت کالا در سایت های دیگر با استفاده از گوگل شیت

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

    گوگل شیت خالی
    نمایی از گوگل شیت خالی

    استفاده از دستور Importxml در گوگل شیت

    در مرحله اول برای خواندن قیمت از وبسایت‌های دیگر، باید از دستوری با عنوان Importxml استفاده کنید. برای اینکار، در یک سلول خالی، ابتدا علامت مساوی = را وارد کرده و سپس عبارت Importxml را وارد کنید. این دستور، تنها به دو گزاره نیاز دارد. در گزاره اول، باید آدرس صفحه‌ی مد نظر را وارد کرده و در گزاره‌ی دوم باید آدرس المان (Xpath_query) را وارد کرد که در ادامه توضیح خواهیم داد. اگر دستور Importxml را در سلول Cell خالی گوگل شیت وارد کنید، با تصویری مشابه زیر روبرو خواهید شد:

    استفاده از importxml در گوگل شیت
    استفاده از دستور Importxml در گوگل شیت
    				
    					=IMPORTXML("URL","xpath_query")
    				
    			

    به چند نکته دقت کنید:

    • گزاره‌ی سوم در اکثر زمان‌ها نیاز نبوده و این دستور را می‌توان با دو گزاره‌ی اول، اجرا کرد.
    • هر دو گزاره‌ی اول باید داخل دابل کوتیشن یا “” قرار گیرند.
    • گزاره‌ی اول آدرس وبسایت بوده که باید همراه با پروتکل (http یا https) وارد شود.

    در ادامه، نحوه‌ی دریافت قیمت یک کتاب از وبسایت‌های دیجی‌کالا، شهر کتاب و نهایتا 30بوک را به صورت عملی توضیح خواهیم داد.

    قسمت اول دستور Importxml

    فرض کنید شما قصد دارد که قیمت کتابی با عنوان یادداشت های یک دیوانه را از سه سایتی که قبلا اسمشان را گفتیم، ثبت کنید. ابتدا وارد هر یک از سایت‌ها شده و به صفحه‌ی فروش همان کتاب (یا هر کالا) وارد شوید. نمایی از صفحه‌ی فروش کتاب یادداشت های یک دیوانه در وبسایت دیجی کالا، در تصویر زیر نمایش داده شده است:

    خواندن قیمت محصول با گوگل شیت
    رفتن به صفحه ی محصول در وبسایت دیگر

    گزاره‌ی اولی که باید در دستور Importxml استفاده کنید، دقیقا آدرس همین صفحه‌ی محصول بوده که در قسمت بالا نمایش داده شده است (URL صفحه). مطمئن شوید که در صفحات دیگر سایت، مثلا در صفحه‌ی دسته‌بندی محصولات یا … قرار نگرفته و مشخصا در صفحه‌ی محصول مد نظر قرار دارید.

    آدرس این صحفه یا همان URL را به همراه پروتکل http یا https کپی کرده و در گزاره‌ی اول دستور Importxml قرار دهید. فراموش نکنید که در دو انتهای این آدرس، باید دابل کوتیشن یا همان ” را قرار دهید. نمایی از گوگل شیت بعد از وارد کردن این گزاره، در تصویر زیر نمایش داده شده است.

    گزاره اول در دستور importxml
    گزاره اول در دستور importxml

    تا بدینجا، گزاره‌ی اول کامل شده است. بعد از وارد کردن URL در قسمت اول Importxml باید کاما یا همان ویرگول را تایپ کنید، تا به سراغ گزاره‌ی دوم برویم. از آنجاییکه پیدا کردن و ثبت آدرس صفحات مختلف در این دستور سخت نیست، فقط این کار را برای سایت دیجی کالا آموزش دادیم. اما گزاره‌ی دوم اندکی سخت‌تر بوده و بنابراین، این کار را برای هر سه سایت تکرار خواهیم کرد.

    قسمت xpath_query در دستور Importxml گوگل شیت

    در قسمت دوم باید آدرس المانی که در صفحه، مربوط به قیمت هست را پیدا کنید. این کار بسیار ساده بوده و کافی است که مراحل را قدم به قدم انجام دهید. ابتدا برروی خود قیمت در صفحه راست کلیک نمایید (موس را برروی قیمت برده و راست کلیک کنید). نمایی از این عمل در وبسایت دیجی کالا در تصویر زیر نمایش داده شده است:

    راست کلیک برروی قیمت
    راست کلیک برروی قیمت

    و سپس برروی گزینه Inspect کلیک نمایید. با این کار، پنجره‌ی Inspector View باز شده که مشابه تصویر زیر است:

    پیدا کردن مسیر xpath
    پیدا کردن مسیر xpath

    هنگامیکه پنجره‌ی جدید باز شد، یکی از المان‌ها هایلایت شده (در تصویر بالا به رنگ آبی روشن در سمت راست-بالا قرار گرفته است)، برروی این هایلات راست کلیک نمایید و به قسمت Copy رفته (عدد 2 در تصویر زیر) و سپس برروی گزینه Copy Full XPath کلیک کنید (عدد 3 در تصویر زیر):

    کپی کردن XPath
    کپی کردن XPath

    بعد از کپی کردن Full XPath مججدا به سراغ گوگل شیت رفته و این آدرس کپی شده را در گزاره‌ی دوم دستور Importxml قرار داده و پرانتز را بسته و اینتر می‌زنیم. یادتان باشد که حتما این آدرس را داخل دابل کوتیشن قرار دهید، در غیر این صورت، با اخطار روبرو خواهید شد. با این کار، دستور آماده شده و پس از یک Loading کوتاه، قیمت نمایش داده می‌شود.

    اضافه کردن XPath به دستور Importxml
    اضافه کردن XPath به دستور Importxml

    کدی که در تصویر بالا مشاهده می‌کنید (برای خواندن قیمت کتاب یادداشت های یک دیوانه از وبسایت دیجی کالا)، به شرح زیر است. می‌توانید این کد را در گوگل شیت خود کپی کنید و با زدن اینتر، مشاهده می‌کنید که آخرین قیمت مربوط به این محصول را به شما نمایش خواهد داد.

    				
    					=IMPORTXML("https://www.digikala.com/product/dkp-65319/%DA%A9%D8%AA%D8%A7%D8%A8-%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA-%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AF%DB%8C%D9%88%D8%A7%D9%86%D9%87-%D8%A7%D8%AB%D8%B1-%D9%86%DB%8C%DA%A9%D9%84%D8%A7%DB%8C-%DA%AF%D9%88%DA%AF%D9%88%D9%84","/html/body/main/div[2]/div[1]/div/article/section[1]/div[2]/div[3]/div/div[1]/div[1]/div[11]/div[2]/div[1]/div")
    				
    			
    لودینگ دستور importxml
    لودینگ دستور importxml
    نمایش قیمت از سایت دیگر
    نمایش قیمت از سایت در گوگل شیت

    همانطور که در تصاویر فوق مشاهده می‌کنید، قیمت بعد از یک لودینگ بسیار کوتاه، در سلول انتخاب شده، نمایش داده شد. اجازه دهید اندکی فایل گوگل شیت را زیبا کنیم و سپس به سراغ بررسی گرفتن قیمت از دو سایت دیگر خواهیم رفت. شما هم خودتان می‌توانید هرطور که خواستید، جدول را زیبا کنید.بعد از مرتب و زیباسازی جدول در گوگل شیت (طبق سلیقه‌ی شخصی خودم!) نمای آن مشابه زیر خواهد شد.

    ایجاد جدول در گوگل شیت
    ایجاد جدول در گوگل شیت
    تکرار فراخوانی قیمت از سایت شهر کتاب

    از آنجاییکه حال با مراحل انجام کار آشنا شده‌اید، این بار کار را سریع‌تر دنبال خواهیم کرد. ابتدا وارد سایت شهر کتاب شوید و برروی قیمت محصول راست کلیک کرده و گزینه Inspect را بزنید. از صفحه‌ی باز شده در سمت راست، برروی المان هایلایت شده (جاییکه قیمت را نشان می‌دهد)، راست کلیک کرده و سپس گزینه‌ی Copy و نهایتا Copy Full XPath را کلیک کنید.

    خواندن قیمت با استفاده از XPath

    وارد گوگل شیت شده، در سلول مد نظر ابتدا دستور Importxml را تایپ کرده و پس از پرانتز، در گزاره‌ی اول آدرس این صفحه و در قسمت دوم، آدرس کپی شده از قسمت Copy Full Xpath را وارد کنید. یادتان باشد که هر دو گزاره باید داخل دابل کوتیشن ” قرار بگیرند.

    خواندن قیمت با استفاده از دستور Importxml
    خواندن قیمت با استفاده از دستور Importxml
    				
    					=IMPORTXML("https://shahreketabonline.com/Products/Details/38302/%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA_%D9%87%D8%A7%DB%8C_%DB%8C%DA%A9_%D8%AF%DB%8C%D9%88%D8%A7%D9%86%D9%87","/html/body/div/main/div/div/div[1]/div[1]/div[1]/div[3]/div[2]/text()")
    				
    			
    قیمت اسکرپینگ در گوگل شیت
    قیمت اسکرپینگ در گوگل شیت
    تکرار خواندن قیمت از سایت 30بوک

    دقیقا همان مراحل قبلی را تکرار کنید. برروی قیمت راست کلیک کرده، از المان هایلایت شده (که قیمت درون آن قرار دارد) استفاده کنید و با راست کلیک کردن و رفتن به قسمت Copy برروی گزینه Copy Full Xpath کلیک کنید و این آدرس را در گزاره‌ی دوم دستور Importxml قرار دهید. در گزاره‌ی اول نیز آدرس سایت را قرار دهید.

    کپی کردن فول ایکس پث
    کپی کردن فول ایکس پث
    جدول نهایی مقایسه قیمت ها
    جدول نهایی مقایسه قیمت ها
    				
    					=IMPORTXML("https://www.30book.com/book/2916/%DA%A9%D8%AA%D8%A7%D8%A8-%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AF%DB%8C%D9%88%D8%A7%D9%86%D9%87-%D8%A7%D8%AB%D8%B1-%D9%86%DB%8C%DA%A9%D9%84%D8%A7%DB%8C-%DA%AF%D9%88%DA%AF%D9%88%D9%84-%D9%86%D8%A7%D8%B4%D8%B1-%D9%86%DB%8C","/html/body/div[3]/div/div[1]/div/div/div[2]/div/div/div[4]/h2/text()")
    				
    			

    بنابراین، با یک دستور ساده با نام Importxml و استفاده از url صفحات به علاوه‌ی Full XPath توانستید یک جدول از قیمت‌ها ایجاد کنید. برای هر محصول از هر سایتی می‌توانید این کار را انجام دهید تا قیمت‌ها را در یک فایل رصد کنید و متوجه تفاوت قیمت آن با محصولات خود شوید. برای مقایسه‌ی راحت‌تر، بهتر است قیمت محصول خود را نیز به جدول اضافه کنید و با استفاده از دستورات Conditional Formatting، رنگ محصولاتی که قیمت آن کمتر یا بیشتر از سایر وبسایت‌ها است، را تغییر دهید تا به سادگی و با یک نگاه، متوجه تفاوت‌ها شوید.

    آپدیت اتومایتک دستور Importxml

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

    در گوگل شیت، تنها چند دستور ساده هستند که هنگام باز شدن فایل، به صورت خودکار باعث آپدیت شدن سلول یا همان Cell می‌شوند. این دستورات یا همان توابع به شرح زیر هستند:

    • دستور Now
    • دستور Time
    • دستور Date

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

    برای این کار، از یک دستور شرطی ساده IF استفاده خواهیم کرد. با این دستور ساده، بررسی می‌کنیم که آیا الان زمان درست است؟! اگر زمان درست باشد، پس دستور Importxml را اجرا کند! از آنجاییکه زمان همواره درست است! بنابراین دستور به سادگی اجرا خواهد شد. این کد مشابه زیر خواهد بود:

    				
    					=if(now(),importxml("url","xpath_query")
    				
    			

    در دستور بالا، ابتدا گزاره‌ی اول IF چک شده و تابع now اجرا خواهد شد و زمان را با زمان حال مقایسه می‌کند. از آنجاییکه همواره زمان حال یک عدد مشخص داشته و شرط صحیحی است، بنابراین، گزاره‌ی بعدی یعنی همان فراخوانی قیمت اجرا خواهد شد. با این کار، با هر بار باز کردن فایل گوگل شیت، تمامی سلول‌ها به صورت خودکار آپدیت شده و به محض باز کردن شیت، تمامی قیمت‌ها به حالت Loading در خواهند آمد که در تصویر زیر نمایش داده شده است.

    آپدیت شدن اتوماتیک قیمت ها
    آپدیت شدن اتوماتیک قیمت ها در گوگل شیت

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

    آیا این مطلب را می پسندید؟
    برچسب ها:

    نظرات

    0 نظر در مورد آموزش گرفتن اتوماتیک قیمت محصولات از سایت های مختلف

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

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

    هیچ دیدگاهی نوشته نشده است.