Cách cạo dữ liệu xu hướng của Google bằng Python

Bình luận: 0

Sử dụng Python và nhà viết kịch để cạo dữ liệu từ Google Xu hướng cho phép kiểm tra chi tiết về mức độ phổ biến từ khóa và giám sát các thay đổi xu hướng theo thời gian. Cách tiếp cận này cung cấp những hiểu biết quan trọng cho các phân tích tiếp thị.

Điều kiện tiên quyết

Trước khi lặn vào mã, hãy đảm bảo bạn đã cài đặt các công cụ sau:

  • Python 3.7+;
  • Thư viện nhà viết kịch.

Bạn có thể cài đặt nhà viết kịch bằng PIP:

pip install playwright

Để sử dụng nhà viết kịch với mã không đồng bộ, bạn cũng sẽ cần thư viện Asyncio, được bao gồm trong Python 3.7+ theo mặc định.

Định cấu hình nhà viết kịch để làm việc với Google Xu hướng

Chúng tôi sẽ sử dụng Playwright, một công cụ tự động hóa trình duyệt mạnh mẽ, để điều hướng trang web của Google Trends và tải xuống các tệp CSV có chứa dữ liệu xu hướng. Hướng dẫn này sẽ hướng dẫn bạn trong toàn bộ quá trình.

Cài đặt nhà viết kịch

Đầu tiên, đảm bảo cài đặt nhà viết kịch:

playwright install

Nếu bạn không muốn cài đặt tất cả các trình duyệt, bạn chỉ sử dụng lệnh này để chỉ cài đặt trình duyệt Chromium.

playwright install chromium

Cấu hình proxy

Khi các nền tảng cạo như Google, hoạt động chống lại hoạt động bot, sử dụng proxy là điều cần thiết. Proxy cho phép xoay IP, giúp giảm nguy cơ bị chặn. Trong kịch bản của chúng tôi, chúng tôi sử dụng các proxy riêng để định tuyến các yêu cầu của chúng tôi.

proxy = {
    "server": "IP:PORT",
    "username": "your_username",
    "password": "your_password"
}

Thay thế các biến IP, cổng, tên người dùng và mật khẩu bằng dữ liệu thực tế từ máy chủ proxy của bạn.

Quy trình làm việc từng bước với nhà viết kịch

Trong ví dụ này, trước tiên chúng tôi điều hướng đến Google.com để bỏ qua bất kỳ khối tiềm năng nào trước khi truy cập trang Google Trends. Điều này được thực hiện để bắt chước hành vi người dùng bình thường và tránh phát hiện.

Bước 1: Chuẩn bị làm việc với Google Xu hướng

Bước này liên quan đến các hành động sơ bộ để ngăn chặn bị Google gắn cờ và chặn bởi Google:

  • Khởi chạy trình duyệt: Điều này liên quan đến việc bắt đầu một phiên bản của trình duyệt crom được cấu hình với các cài đặt proxy. Việc sử dụng các proxy giúp giảm cơ hội phát hiện bằng cách ngụy trang hoạt động cạo dưới dạng sử dụng trình duyệt thông thường;
  • Điều hướng đến Google: Bằng cách truy cập Google.com trước tiên, nó làm quen với các hệ thống theo dõi Google Google về sự hiện diện của những gì nó nhận thấy là một người dùng mới. Bước điều hướng đơn giản này làm giảm khả năng các hoạt động tiếp theo được phân loại là giống như bot, do đó tránh bị chặn ngay lập tức.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Khởi chạy trình duyệt với cài đặt proxy
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Tạo bối cảnh trình duyệt mới
    context = await browser.new_context()
    
    # Mở một trang mới
    page = await context.new_page()
    
    # Tham quan Google để bắt chước trình duyệt bình thường
    await page.goto("https://google.com")

Bước 2: Điều hướng và tải xuống dữ liệu từ Google Xu hướng

Tiếp theo, điều hướng trực tiếp đến trang Google Trends nơi có dữ liệu cần thiết. Google Trends cung cấp các tùy chọn để tải xuống dữ liệu trực tiếp ở định dạng CSV, tạo điều kiện cho quá trình trích xuất. Tự động hóa hành động nhấp vào nút "Tải xuống" để bắt đầu tải xuống dữ liệu. Điều này cho phép trích xuất dữ liệu xu hướng mà không cần can thiệp thủ công. Khi nút tải xuống của Google, có thể hiển thị, tự động hóa sẽ tiến hành nhấp vào nó, bắt đầu tải xuống tệp CSV có chứa dữ liệu xu hướng cần thiết.

 # Điều hướng theo xu hướng của Google
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Đang chờ nút tải xuống và nhấp vào nó
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Xử lý tải xuống
    download = await download_info.value
    print(download.suggested_filename)

Bước 3: Lưu dữ liệu và kết thúc phiên

Tệp CSV được tải xuống được tự động lưu trong một thư mục được chỉ định trên thiết bị cục bộ của bạn.

 # Lưu tệp đã tải xuống
    await download.save_as("/path/to/save/" + download.suggested_filename)

Hoàn thành Mã ví dụ

Tại đây, mã hoàn chỉnh để tải xuống dữ liệu Google Trends dưới dạng tệp CSV bằng Playwright:

import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright


async def run(playwright: Playwright) -> None:
   # Trình duyệt khởi chạy với cài đặt proxy
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Tạo bối cảnh trình duyệt mới
   context = await browser.new_context()

   # Mở một trang mới
   page = await context.new_page()

   # Ghé thăm Google để tránh phát hiện
   await page.goto("https://google.com")

   # Điều hướng đến các xu hướng của Google
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Nhấp vào nút Tải xuống
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Lưu tệp đã tải xuống
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Đóng bối cảnh và trình duyệt
   await context.close()
   await browser.close()


async def main() -> None:
   async with async_playwright() as playwright:
       await run(playwright)


asyncio.run(main())

Thực hiện theo hướng dẫn này, bạn có thể tải xuống hiệu quả dữ liệu xu hướng, quản lý xoay vòng proxy và bỏ qua các cơ chế bảo vệ bot. Để tránh chặn hiệu quả, sử dụng các máy chủ proxy đáng tin cậy là rất quan trọng. Các proxy dân cư, cung cấp địa chỉ IP động và không cần cấu hình xoay, rất được khuyến khích. Ngoài ra, các proxy ISP tĩnh cũng có hiệu quả; Mua số IPS yêu cầu và thiết lập xoay IP thông thường trong tập lệnh của bạn. Hoặc là sự lựa chọn đảm bảo rủi ro tối thiểu của việc chặn và captcha, tạo điều kiện cho việc cạo dữ liệu nhanh hơn và mượt mà hơn.

Bình luận:

0 Bình luận