برنامه نویسی

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

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

گوگل حجم عظیمی از داده ها را برای کسب و کارها و محققان در اختیار دارد. روزانه بیش از 8.5 میلیارد جستجو انجام می دهد و 91 درصد از بازار جهانی موتورهای جستجو را در اختیار دارد.

از زمان شروع ChatGPT، داده‌های Google نه تنها برای اهداف سنتی مانند ردیابی رتبه، نظارت بر رقبا، و تولید سرنخ، بلکه برای توسعه مدل‌های پیشرفته LLM، آموزش مدل‌های هوش مصنوعی، و افزایش قابلیت‌های مدل‌های پردازش زبان طبیعی (NLP) مورد استفاده قرار گرفته است. .

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

گوگل را با پایتون خراش دهید

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

بیایید شروع کنیم!

نتایج جستجوی گوگل چیست؟

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

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

داده های جستجوی گوگل کاربردهای مختلفی دارد:

  • ساخت ردیاب رتبه و کلمات کلیدی برای اهداف سئو.
  • جستجو برای مشاغل محلی
  • ساخت موتورهای LLM.
  • کشف موضوعات انفجاری برای روندهای بالقوه در آینده.

چرا پایتون برای خراش دادن گوگل؟

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

علاوه بر این، مبتدیانی که به دنبال یادگیری پایتون به عنوان یک مهارت خراش دادن وب هستند می توانند به دلیل نحو ساده و وضوح کد آن را به راحتی درک کنند. به علاوه، از پشتیبانی اجتماعی عظیمی در پلتفرم هایی مانند Discord، Reddit و غیره برخوردار است که می تواند به هر سطحی از مشکلی که با آن روبرو هستید کمک کند.

این زبان مقیاس‌پذیر در عملکرد اسکراپی وب برتری دارد و چارچوب‌های قدرتمندی مانند Scrapy، Requests و BeautifulSoup را ارائه می‌کند و آن را به انتخابی برتر برای خراش دادن گوگل و سایر وب‌سایت‌ها در مقایسه با زبان‌های دیگر تبدیل می‌کند.

خراش دادن نتایج جستجوی گوگل با پایتون

این بخش به ما آموزش می دهد که یک اسکریپت پایتون پایه برای بازیابی 10 نتیجه اول جستجوی گوگل ایجاد کنیم.

الزامات

برای دنبال کردن این آموزش باید کتابخانه های زیر را نصب کنیم:

  • درخواست‌ها – برای بیرون کشیدن داده‌های HTML از URL جستجوی Google.

  • BeautifulSoup – برای پالایش داده های HTML در قالبی ساختاریافته.

راه اندازی

راه اندازی ساده است. یک فایل پایتون ایجاد کنید و کتابخانه های مورد نیاز را برای شروع نصب کنید.

دستورات زیر را در پوشه پروژه خود اجرا کنید:

    touch scraper.py
وارد حالت تمام صفحه شوید

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

و سپس کتابخانه ها را نصب کنید.

    pip install requests
    pip install beautifulsoup4
وارد حالت تمام صفحه شوید

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

فرآیند

ما با راه اندازی تمام شده ایم و همه چیز را برای حرکت به جلو داریم. ما از کتابخانه Requests در پایتون برای استخراج HTML خام و BeautifulSoup برای اصلاح آن و دریافت اطلاعات مورد نظر استفاده خواهیم کرد.

اما چیست “اطلاعات مورد نظر“اینجا؟

نتایج جستجوی گوگل

داده های فیلتر شده حاوی این اطلاعات است:

  • عنوان
  • پیوند
  • لینک نمایش داده شده
  • توضیحات
  • موقعیت نتیجه

اجازه دهید کتابخانه های نصب شده خود را ابتدا در فایل scraper.py وارد کنیم.

    from bs4 import BeautifulSoup
    import requests
وارد حالت تمام صفحه شوید

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

سپس، یک درخواست GET در URL مورد نظر برای واکشی داده‌های خام HTML از Google ارائه می‌کنیم.

headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.361681276786'}
    url="https://www.google.com/search?q=python+tutorials&gl=us"
    response = requests.get(url,headers=headers)
    print(response.status_code)
وارد حالت تمام صفحه شوید

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

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

کد بالا به شما کمک می کند تا داده های HTML را از پیوند جستجوی Google بکشید. اگر کد وضعیت 200 را دریافت کردید، به این معنی است که درخواست با موفقیت انجام شده است. این قسمت اول ایجاد اسکراپر برای گوگل را تکمیل می کند.

در قسمت بعدی از BeautifulSoup برای دریافت اطلاعات مورد نیاز از HTML استفاده خواهیم کرد.

    soup = BeautifulSoup(response.text, ‘html.parser’)
وارد حالت تمام صفحه شوید

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

این یک شی BS4 برای تجزیه پاسخ HTML ایجاد می کند و بنابراین ما می توانیم به راحتی در داخل HTML حرکت کنیم و هر عنصر انتخابی و محتوای داخل آن را پیدا کنیم.

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

نتایج جستجوی گوگل

بنابراین، پس از بررسی متوجه شدیم که هر نتیجه جستجو در ظرف div با کلاس g قرار دارد. این بدان معناست که ما فقط باید یک حلقه روی هر ظرف div با کلاس g اجرا کنیم تا اطلاعات داخل آن را بدست آوریم.

قبل از نوشتن کد، مکان DOM را برای عنوان، توضیحات و پیوند از HTML پیدا می کنیم.

اگر عنوان را بررسی کنید، متوجه می شوید که در یک تگ h3 قرار دارد. از روی تصویر نیز می بینیم که لینک در ویژگی href تگ anchor قرار دارد.

بررسی عنوان

پیوند نمایش داده شده یا پیوند نقل قول را می توان در داخل تگ استناد یافت.

بررسی لینک نمایش داده شده

و در نهایت، توضیحات در داخل یک ظرف div با کلاس ذخیره می شود VwiC3b.

بررسی توضیحات

قرار دادن تمام این موجودیت های داده در یک بلوک کد:

organic_results = []
        i = 0

        # Parse organic results with error handling
        for el in soup.select(".g"):
            try:
                title = el.select_one("h3").text if el.select_one("h3") else "No title"
                displayed_link = el.select_one(".byrV5b cite").text if el.select_one(".byrV5b cite") else "No displayed link"
                link = el.select_one("a")["href"] if el.select_one("a") else "No link"
                description = el.select_one(".VwiC3b").text if el.select_one(".VwiC3b") else "No description"

                organic_results.append({
                    "title": title,
                    "displayed_link": displayed_link,
                    "link": link,
                    "description": description,
                    "rank": i + 1
                })
                i += 1
            except Exception as e:
                print(f"Error parsing element: {e}")

        print(organic_results)
وارد حالت تمام صفحه شوید

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

ما یک آرایه نتایج ارگانیک را اعلام کردیم و سپس روی تمام عناصر با کلاس g در HTML حلقه زدیم و داده های جمع آوری شده را در داخل آرایه قرار دادیم.

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

[
      {
        "title": "Python Tutorial",
        "displayed_link": "https://www.w3schools.com \u203a python",
        "link": "https://www.w3schools.com/python/",
        "description": "Learn Python. Python is a popular programming language. Python can be used on a server to create web applications. Start learning Python now.",
        "rank": 1
      },
      {
        "title": "The Python Tutorial \u2014 Python 3.13.1 documentation",
        "displayed_link": "https://docs.python.org \u203a tutorial",
        "link": "https://docs.python.org/3/tutorial/index.html",
        "description": "This tutorial introduces the reader informally to the basic concepts and features of the Python language and system. It helps to have a Python interpreter handy\u00a0...",
        "rank": 2
      },
     ....
    ]
وارد حالت تمام صفحه شوید

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

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

با این حال، CATCH وجود دارد. ما هنوز نمی‌توانیم به طور کامل به این روش اعتماد کنیم زیرا این امر می‌تواند منجر به مسدود شدن IP ما توسط Google شود. اگر می‌خواهیم نتایج جستجو را در مقیاس خراش دهیم، به شبکه گسترده‌ای از پراکسی‌های ممتاز و غیر پریمیوم و تکنیک‌های پیشرفته نیاز داریم که بتواند این کار را ممکن کند. اینجاست که API های SERP وارد عمل می شوند!

Scraping Google با استفاده از ApiForSeo's SERP API

روش دیگر برای خراش دادن گوگل استفاده از API اختصاصی SERP است. آنها بسیار قابل اعتمادتر هستند و به شما اجازه نمی دهند در فرآیند خراشیدن مسدود شوید.

تنظیمات این بخش نیز به همین صورت خواهد بود، فقط باید در ApiForSeo ثبت نام کنیم تا کلید API خود را دریافت کنیم که به ما امکان دسترسی به API SERP آن را می دهد.

دریافت اعتبار API از ApiForSeo

ApiForSeo

پس از فعال سازی حساب، به داشبورد هدایت می شوید که در آن کلید API خود را دریافت می کنید.

داشبورد ApiForSeo

همچنین می توانید کد را از خود داشبورد کپی کنید.

تنظیم کد ما برای خراش دادن نتایج جستجو

سپس، یک درخواست API در یک پرس و جو تصادفی ایجاد می کنیم تا داده ها را از طریق ApiForSeo SERP API حذف کنیم.

 import requests

    api_key = "APIKEY"
    url = "https://api.apiforseo.com/google_search"

    params = {
        "api_key": api_key,
        "q": "elon+musk",
        "gl": "us",
    }

    response = requests.get(url, params=params)

    if response.status_code == 200:
        data = response.json()
        print(data)
    else:
        print(f"Request failed with status code: {response.status_code}")

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

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

می توانید هر پرس و جو دیگری را نیز امتحان کنید. فراموش نکنید که کلید API خود را در کد قرار دهید در غیر این صورت با خطای 404 مواجه خواهید شد.

اجرای این کد در ترمینال بلافاصله به شما نتیجه می دهد.

 "organic_results": [
        {
          "title": "Elon Musk - Wikipedia",
          "displayed_link": "https://en.wikipedia.org › wiki › Elon_Musk",
          "snippet": "Elon Reeve Musk is a businessman known for his key roles in the space company SpaceX and the automotive company Tesla, Inc. His other involvements include ...Musk family · Tesla Roadster · Tesla, SpaceX, and the Quest... · Maye Musk",
          "link": "https://en.wikipedia.org/wiki/Elon_Musk",
          "extended_sitelinks": [
            {
              "title": "Musk family",
              "link": "https://en.wikipedia.org/wiki/Musk_family"
            },
            {
              "title": "Tesla Roadster",
              "link": "https://en.wikipedia.org/wiki/Elon_Musk%27s_Tesla_Roadster"
            },
            {
              "title": "Tesla, SpaceX, and the Quest...",
              "link": "https://en.wikipedia.org/wiki/Elon_Musk:_Tesla,_SpaceX,_and_the_Quest_for_a_Fantastic_Future"
            },
            {
              "title": "Maye Musk",
              "link": "https://en.wikipedia.org/wiki/Maye_Musk"
            }
          ],
          "rank": 1
        },
        {
          "title": "Elon Musk - Forbes",
          "displayed_link": "https://www.forbes.com › profile › elon-musk",
          "snippet": "Real Time Net Worth · Elon Musk cofounded seven companies, including electric car maker Tesla, rocket producer SpaceX and artificial intelligence startup xAI.Will Elon Musk’s Silicon Valley... · Forbes Real Time Billionaires · Tesla · Peter Thiel",
          "link": "https://www.forbes.com/profile/elon-musk/",
          "extended_sitelinks": [
            {
              "title": "Will Elon Musk’s Silicon Valley...",
              "link": "https://www.forbes.com/sites/gregorme/2024/12/11/will-elon-musks-silicon-valley-playbook-work-in-government/"
            },
            {
              "title": "Forbes Real Time Billionaires",
              "link": "https://www.forbes.com/real-time-billionaires/"
            },
            {
              "title": "Tesla",
              "link": "https://www.forbes.com/companies/tesla/"
            },
            {
              "title": "Peter Thiel",
              "link": "https://www.forbes.com/profile/peter-thiel/"
            }
          ],
          "rank": 2
        },
    .....
    ]
وارد حالت تمام صفحه شوید

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

داده‌های بالا حاوی نکات مختلفی از جمله عناوین، پیوندها، قطعه‌ها، توضیحات، و قطعه‌های برجسته مانند لینک‌های سایت توسعه‌یافته هستند. همچنین قطعه‌های ویژگی پیشرفته‌ای مانند People also Ask For، نمودار دانش، جعبه‌های پاسخ و غیره را از این API دریافت خواهید کرد.

نتیجه گیری

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

در این آموزش یاد گرفتیم که چگونه نتایج جستجوی گوگل را با استفاده از پایتون خراش دهیم. اگر این وبلاگ را مفید یافتید، لطفاً آن را در رسانه های اجتماعی و سایر سیستم عامل ها به اشتراک بگذارید.

متشکرم

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

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

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

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