🥳Hãy tham gia Cộng đồng ScrapelessYêu cầu dùng thử miễn phí để truy cập Bộ công cụ quét web mạnh mẽ của chúng tôi!
Quay lại Blog

Cách lấy dữ liệu Google Trends bằng Python?

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

25-Dec-2024

Google Trends là một công cụ trực tuyến miễn phí được cung cấp bởi Google, phân tích mức độ phổ biến của các từ khóa hoặc cụm từ tìm kiếm cụ thể trên công cụ tìm kiếm Google theo thời gian.

Nó trình bày dữ liệu dưới dạng biểu đồ để giúp người dùng hiểu mức độ phổ biến tìm kiếm của một chủ đề hoặc từ khóa nhất định, và xác định các mô hình như biến động theo mùa, xu hướng mới nổi hoặc sự quan tâm giảm dần. Google Trends không chỉ hỗ trợ phân tích dữ liệu toàn cầu, mà còn có thể được tinh chỉnh cho các khu vực cụ thể và cung cấp các đề xuất cho các từ khóa và chủ đề liên quan.

Google Trends được sử dụng rộng rãi trong nghiên cứu thị trường, lập kế hoạch nội dung, tối ưu hóa SEO và phân tích hành vi người dùng, giúp người dùng đưa ra quyết định sáng suốt hơn dựa trên dữ liệu.

Ví dụ: Trong bài viết này, chúng ta hãy thu thập dữ liệu xu hướng tìm kiếm Google của 'DOGE' trong tháng trước.

Xu hướng tìm kiếm Google của DOGE

Bước 1: Điều kiện tiên quyết

Cài đặt Python

Trên Windows

Sử dụng Trình cài đặt Python chính thức

  1. Tải xuống Trình cài đặt Python:

    • Truy cập trang web chính thức của Python.
    • Trang web sẽ tự động đề xuất phiên bản mới nhất cho Windows. Nhấp vào nút Tải xuống Python để tải xuống trình cài đặt.
  2. Chạy Trình cài đặt:

    • Mở tệp .exe đã tải xuống để bắt đầu quá trình cài đặt.
  3. Tùy chỉnh cài đặt (tùy chọn):

    • Hãy chắc chắn đánh dấu vào ô có nội dung "Thêm Python vào PATH" ở đầu cửa sổ cài đặt. Điều này giúp Python có thể truy cập được từ dòng lệnh (cmd hoặc PowerShell).
    • Bạn cũng có thể nhấp vào "Tùy chỉnh cài đặt" để chọn các tính năng bổ sung như pip, IDLE hoặc tài liệu.
  4. Cài đặt Python:

    • Nhấp vào Cài đặt ngay để cài đặt Python với các cài đặt mặc định.
    • Sau khi cài đặt, bạn có thể xác minh nó bằng cách mở Command Prompt (cmd) và nhập:
      bash Copy
      python --version
  5. Cài đặt pip (nếu cần):

    • Pip, trình quản lý gói Python, được cài đặt theo mặc định với các phiên bản Python hiện đại. Bạn có thể kiểm tra xem pip đã được cài đặt chưa bằng cách nhập:
      bash Copy
      pip --version

Bạn cũng có thể cài đặt Python trực tiếp từ Windows Store (có sẵn trên Windows 10/11). Chỉ cần tìm kiếm "Python" trong ứng dụng Microsoft Store và chọn phiên bản bạn cần.

Trên macOS

Phương pháp 1. Sử dụng Homebrew (khuyến nghị)

  1. Cài đặt Homebrew (nếu chưa được cài đặt):

    • Mở ứng dụng Terminal.
    • Dán lệnh sau để cài đặt Homebrew (trình quản lý gói cho macOS):
      bash Copy
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Cài đặt Python với Homebrew:

    • Sau khi Homebrew được cài đặt, bạn có thể cài đặt Python bằng lệnh này:
      bash Copy
      brew install python
  3. Xác minh cài đặt:

    • Sau khi cài đặt, bạn có thể xác minh phiên bản Python và pip bằng các lệnh sau:
      bash Copy
      python3 --version
      pip3 --version

Phương pháp 2. Sử dụng Trình cài đặt Python chính thức

  1. Tải xuống Trình cài đặt macOS:

  2. Chạy Trình cài đặt:

    • Mở tệp .pkg để bắt đầu quá trình cài đặt và làm theo hướng dẫn.
  3. Xác minh cài đặt:

    • Sau khi cài đặt, mở Terminal và kiểm tra phiên bản Python:
      bash Copy
      python3 --version
      pip3 --version

Trên Linux

Đối với các bản phân phối dựa trên Debian/Ubuntu

  1. Cập nhật danh sách gói:

    • Mở một thiết bị đầu cuối và chạy lệnh sau để cập nhật danh sách gói:
      bash Copy
      sudo apt update
  2. Cài đặt Python:

    • Để cài đặt Python 3 (thường là phiên bản mới nhất của Python 3.x), hãy chạy:
      bash Copy
      sudo apt install python3
  3. Cài đặt pip (nếu chưa được cài đặt):

    • Nếu pip chưa được cài đặt, bạn có thể cài đặt nó bằng:
      bash Copy
      sudo apt install python3-pip
  4. Xác minh cài đặt:

    • Để kiểm tra phiên bản Python đã cài đặt:
      bash Copy
      python3 --version
      pip3 --version

Đối với các bản phân phối dựa trên Red Hat/Fedora

  1. Cài đặt Python 3:

    • Mở một thiết bị đầu cuối và chạy:
      bash Copy
      sudo dnf install python3
  2. Cài đặt pip (nếu cần):

    • Nếu pip không được cài đặt theo mặc định, bạn có thể cài đặt nó bằng:
      bash Copy
      sudo dnf install python3-pip
  3. Xác minh cài đặt:

    • Để kiểm tra phiên bản Python đã cài đặt:
      bash Copy
      python3 --version
      pip3 --version

Đối với Arch Linux và các bản phân phối dựa trên Arch

  1. Cài đặt Python 3:

    • Chạy lệnh sau:
      bash Copy
      sudo pacman -S python
  2. Cài đặt pip:

    • Pip nên được cài đặt với Python, nhưng nếu không, bạn có thể cài đặt nó bằng:
      bash Copy
      sudo pacman -S python-pip
  3. Xác minh cài đặt:

    • Để kiểm tra phiên bản Python và pip:
      bash Copy
      python --version
      pip --version

Sử dụng Python thông qua Anaconda (hỗ trợ đa nền tảng)

Anaconda là một bản phân phối phổ biến cho tính toán khoa học và đi kèm với Python, thư viện và trình quản lý gói conda.

  1. Tải xuống Anaconda:

  2. Cài đặt Anaconda:

    • Làm theo hướng dẫn cài đặt dựa trên hệ điều hành của bạn. Anaconda cung cấp trình cài đặt đồ họa cho cả Windows và macOS, cũng như trình cài đặt dòng lệnh cho tất cả các nền tảng.
  3. Xác minh cài đặt:

    • Sau khi cài đặt, mở một thiết bị đầu cuối (hoặc Anaconda Prompt trên Windows) và kiểm tra xem Python có hoạt động không:

      bash Copy
      python --version
    • Bạn cũng có thể xác minh conda (trình quản lý gói cho Anaconda):

      bash Copy
      conda --version

Quản lý các phiên bản Python (tùy chọn)

Nếu bạn cần quản lý nhiều phiên bản Python trên cùng một máy, bạn có thể sử dụng các trình quản lý phiên bản:

  • pyenv: Một trình quản lý phiên bản Python phổ biến hoạt động trên Linux và macOS.

    • Cài đặt thông qua Homebrew hoặc GitHub (cho Linux và macOS).
    • Trên Windows, bạn có thể sử dụng pyenv-win.
    bash Copy
    pyenv install 3.9.0
    pyenv global 3.9.0

Vì chúng ta chưa phát triển thư viện bên thứ ba để sử dụng, bạn chỉ cần cài đặt requests để trải nghiệm dịch vụ API scrapeless

Shell Copy
pip install requests

Bước 2: Cấu hình các trường mã cần thiết

Viết mã

Tiếp theo, chúng ta cần biết cách lấy dữ liệu mình cần thông qua cấu hình:

  • Từ khóa: Trong ví dụ này, từ khóa của chúng ta là 'DOGE' (chúng ta cũng hỗ trợ thu thập dữ liệu so sánh nhiều từ khóa)
  • Cấu hình dữ liệu:
    • Quốc gia: Quốc gia truy vấn, mặc định là 'Toàn cầu'
    • Thời gian: Khoảng thời gian
    • Thể loại: Loại
    • Thuộc tính: Nguồn

Bước 3: Trích xuất dữ liệu

Bây giờ, chúng ta hãy lấy dữ liệu mục tiêu bằng mã Python:

Python Copy
import json
import requests


class Payload:
    def __init__(self, actor, input_data, proxy):
        self.actor = actor
        self.input = input_data
        self.proxy = proxy


def send_request(data_type, search_term):
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "scrapeless-api-key"  # TODO:use your api key

    headers = {"x-api-token": token}

    input_data = {
        "q": search_term,
        "date": "today 1-m",
        "data_type": data_type,
        "hl": "en-sg",
        "tz": "-480",
        "geo": "",
        "cat": "",
        "property": "",
    }

    proxy = {
        "country": "ANY",
    }

    payload = Payload("scraper.google.trends", input_data, proxy)

    json_payload = json.dumps(payload.__dict__)

    response = requests.post(url, headers=headers, data=json_payload)

    if response.status_code != 200:
        print("Error:", response.status_code, response.text)
        return

    print("body", response.text)


if __name__ == "__main__":
    send_request(data_type="interest_over_time", search_term="DOGE")
  • Đầu ra:
JSON Copy
{"interest_over_time":{"averages":[],"timelineData":[{"formattedAxisTime":"24 Nov","formattedTime":"24 Nov 2024","formattedValue":["85"],"hasData":[true],"time":"1732406400","value":[85]},{"formattedAxisTime":"25 Nov","formattedTime":"25 Nov 2024","formattedValue":["89"],"hasData":[true],"time":"1732492800","value":[89]},{"formattedAxisTime":"26 Nov","formattedTime":"26 Nov 2024","formattedValue":["68"],"hasData":[true],"time":"1732579200","value":[68]},{"formattedAxisTime":"27 Nov","formattedTime":"27 Nov 2024","formattedValue":["60"],"hasData":[true],"time":"1732665600","value":[60]},{"formattedAxisTime":"28 Nov","formattedTime":"28 Nov 2024","formattedValue":["49"],"hasData":[true],"time":"1732752000","value":[49]},{"formattedAxisTime":"29 Nov","formattedTime":"29 Nov 2024","formattedValue":["55"],"hasData":[true],"time":"1732838400","value":[55]},{"formattedAxisTime":"30 Nov","formattedTime":"30 Nov 2024","formattedValue":["54"],"hasData":[true],"time":"1732924800","value":[54]},{"formattedAxisTime":"1 Dec","formattedTime":"1 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1733011200","value":[55]},{"formattedAxisTime":"2 Dec","formattedTime":"2 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733097600","value":[64]},{"formattedAxisTime":"3 Dec","formattedTime":"3 Dec 2024","formattedValue":["57"],"hasData":[true],"time":"1733184000","value":[57]},{"formattedAxisTime":"4 Dec","formattedTime":"4 Dec 2024","formattedValue":["61"],"hasData":[true],"time":"1733270400","value":[61]},{"formattedAxisTime":"5 Dec","formattedTime":"5 Dec 2024","formattedValue":["100"],"hasData":[true],"time":"1733356800","value":[100]},{"formattedAxisTime":"6 Dec","formattedTime":"6 Dec 2024","formattedValue":["84"],"hasData":[true],"time":"1733443200","value":[84]},{"formattedAxisTime":"7 Dec","formattedTime":"7 Dec 2024","formattedValue":["79"],"hasData":[true],"time":"1733529600","value":[79]},{"formattedAxisTime":"8 Dec","formattedTime":"8 Dec 2024","formattedValue":["72"],"hasData":[true],"time":"1733616000","value":[72]},{"formattedAxisTime":"9 Dec","formattedTime":"9 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733702400","value":[64]},{"formattedAxisTime":"10 Dec","formattedTime":"10 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1733788800","value":[64]},{"formattedAxisTime":"11 Dec","formattedTime":"11 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1733875200","value":[63]},{"formattedAxisTime":"12 Dec","formattedTime":"12 Dec 2024","formattedValue":["59"],"hasData":[true],"time":"1733961600","value":[59]},{"formattedAxisTime":"13 Dec","formattedTime":"13 Dec 2024","formattedValue":["54"],"hasData":[true],"time":"1734048000","value":[54]},{"formattedAxisTime":"14 Dec","formattedTime":"14 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734134400","value":[48]},{"formattedAxisTime":"15 Dec","formattedTime":"15 Dec 2024","formattedValue":["43"],"hasData":[true],"time":"1734220800","value":[43]},{"formattedAxisTime":"16 Dec","formattedTime":"16 Dec 2024","formattedValue":["48"],"hasData":[true],"time":"1734307200","value":[48]},{"formattedAxisTime":"17 Dec","formattedTime":"17 Dec 2024","formattedValue":["55"],"hasData":[true],"time":"1734393600","value":[55]},{"formattedAxisTime":"18 Dec","formattedTime":"18 Dec 2024","formattedValue":["52"],"hasData":[true],"time":"1734480000","value":[52]},{"formattedAxisTime":"19 Dec","formattedTime":"19 Dec 2024","formattedValue":["63"],"hasData":[true],"time":"1734566400","value":[63]},{"formattedAxisTime":"20 Dec","formattedTime":"20 Dec 2024","formattedValue":["64"],"hasData":[true],"time":"1734652800","value":[64]},{"formattedAxisTime":"21 Dec","formattedTime":"21 Dec 2024","formattedValue":["47"],"hasData":[true],"time":"1734739200","value":[47]},{"formattedAxisTime":"22 Dec","formattedTime":"22 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734825600","value":[44]},{"formattedAxisTime":"23 Dec","formattedTime":"23 Dec 2024","formattedValue":["44"],"hasData":[true],"time":"1734912000","value":[44]},{"formattedAxisTime":"24 Dec","formattedTime":"24 Dec 2024","formattedValue":["46"],"hasData":[true],"isPartial":true,"time":"1734998400","value":[46]}]}}

Bước 4: Tối ưu hóa mã

  • Cấu hình nhiều quốc gia
Python Copy
country_map = {
        "Toàn cầu": "",
        "Afghanistan":"AF",
        "Quần đảo Åland":"AX",
        "Albania":"AL",
        #...
    }
  • Cấu hình nhiều khoảng thời gian
Python Copy
time_map = {
        "Giờ trước":"now 1-H",
        "4 giờ trước":"now 4-H",
        "7 ngày trước":"now 7-d",
        "30 ngày trước":"today 1-m",
        # ...
    }
  • Cấu hình nhiều thể loại
Python Copy
category_map = {
        "Tất cả các thể loại": "",
        "Nghệ thuật & Giải trí": "3",
        "Ô tô & Phương tiện": "47",
        # ...
    }
  • Cấu hình nhiều nguồn
Python Copy
property_map = {
        "Tìm kiếm trên Web":"",
        "Tìm kiếm hình ảnh":"images",
        "Google Shopping":"froogle",
         # ...
    }
  • Mã được cải tiến:
Python Copy
import json
import requests

country_map = {
    "Toàn cầu": "",
    "Afghanistan": "AF",
    "Quần đảo Åland": "AX",
    "Albania": "AL",
    # ...
}
time_map = {
    "Giờ trước": "now 1-H",
    "4 giờ trước": "now 4-H",
    "7 ngày trước": "now 7-d",
    "30 ngày trước": "today 1-m",
    # ...
}
category_map = {
    "Tất cả các thể loại": "",
    "Nghệ thuật & Giải trí": "3",
    "Ô tô & Phương tiện": "47",
    # ...
}
property_map = {
    "Tìm kiếm trên Web": "",
    "Tìm kiếm hình ảnh": "images",
    "Google Shopping": "froogle",
    # ...
}


class Payload:
    def __init__(self, actor, input_data, proxy):
        self.actor = actor
        self.input = input_data
        self.proxy = proxy


def send_request(data_type, search_term, country, time, category, property):
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "scrapeless-api-key"  # TODO:use your api key

    headers = {"x-api-token": token}

    input_data = {
        "q": search_term,  # search term
        "geo": country,
        "date": time,
        "cat": category,
        "property": property,
        "hl": "en-sg",
        "tz": "-480",
        "data_type": data_type
    }

    proxy = {
        "country": "ANY",
    }

    payload = Payload("scraper.google.trends", input_data, proxy)

    json_payload = json.dumps(payload.__dict__)

    response = requests.post(url, headers=headers, data=json_payload, verify=False)

    if response.status_code != 200:
        print("Error:", response.status_code, response.text)
        return

    print("body", response.text)


if __name__ == "__main__":
    # one search_term
    send_request(
        data_type="interest_over_time",
        search_term="DOGE",
        country=country_map["Toàn cầu"],
        time=time_map["30 ngày trước"],
        category=category_map["Nghệ thuật & Giải trí"],
        property=property_map["Tìm kiếm trên Web"],
    )
    # two search_term
    send_request(
        data_type="interest_over_time",
        search_term="DOGE,python",
        country=country_map["Toàn cầu"],
        time=time_map["30 ngày trước"],
        category=category_map["Nghệ thuật & Giải trí"],
        property=property_map["Tìm kiếm trên Web"],
    )

Vấn đề trong quá trình thu thập dữ liệu

  • Chúng ta cần đưa ra đánh giá về một số lỗi mạng để ngăn chặn lỗi gây ra việc ngừng hoạt động;
  • Thêm một cơ chế thử lại nhất định có thể ngăn chặn các gián đoạn trong quá trình thu thập dữ liệu gây ra việc thu thập dữ liệu trùng lặp/không hợp lệ.
  • Bước 1. Đăng nhập vào Scrapeless
  • Bước 2. Nhấp vào "Scraping API"
Scraping API
  • Bước 3. Tìm bảng điều khiển "Google Trends" của chúng ta và nhập vào đó:
Google Trends
  • Bước 4. Cấu hình dữ liệu của bạn trong bảng điều khiển hoạt động bên trái:
Cấu hình dữ liệu của bạn
  • Bước 5. Nhấp vào nút "Bắt đầu thu thập dữ liệu" và sau đó bạn có thể nhận được kết quả:
Bắt đầu thu thập dữ liệu

Bên cạnh đó, bạn cũng có thể tham khảo mã mẫu của chúng tôi.

Scrapeless là một giải pháp sáng tạo được thiết kế để đơn giản hóa quá trình trích xuất dữ liệu từ các trang web. API của chúng tôi được thiết kế để điều hướng các môi trường web phức tạp nhất và quản lý hiệu quả nội dung động và việc hiển thị JavaScript.

Tại sao Scrapeless hoạt động tốt để thu thập dữ liệu Google Trends?

Nếu chúng ta chỉ sử dụng mã Python để thu thập dữ liệu Google Trends, chúng ta sẽ dễ dàng gặp phải hệ thống xác minh reCAPTHCA. Điều này mang lại những thách thức lớn cho quá trình thu thập dữ liệu của chúng ta.

Tuy nhiên, API thu thập dữ liệu Google Trends của Scrapeless tích hợp giải pháp CAPTCHA và luân chuyển IP thông minh, vì vậy không cần phải lo lắng về việc bị trang web theo dõi và xác định. Scrapeless đảm bảo tỷ lệ thành công thu thập dữ liệu trang web 99,9%, cung cấp cho bạn một môi trường thu thập dữ liệu ổn định và an toàn hoàn toàn.

4 ưu điểm điển hình của Scrapeless

  1. Giá cả cạnh tranh
    Scrapeless không chỉ mạnh mẽ mà còn đảm bảo giá cả cạnh tranh hơn trên thị trường. Giá gọi dịch vụ API thu thập dữ liệu Google trends của Scrapeless bắt đầu từ 2 đô la cho 1 nghìn yêu cầu thành công.
  2. Ổn định
    Kinh nghiệm rộng rãi và hệ thống mạnh mẽ đảm bảo việc thu thập dữ liệu đáng tin cậy, không bị gián đoạn với khả năng giải quyết CAPTCHA tiên tiến.
  3. Tốc độ
    Một nhóm proxy khổng lồ đảm bảo việc thu thập dữ liệu quy mô lớn hiệu quả mà không bị chặn IP hoặc chậm trễ.
  4. Hiệu quả về chi phí
    Công nghệ độc quyền giảm thiểu chi phí, cho phép chúng tôi cung cấp giá cả cạnh tranh mà không ảnh hưởng đến chất lượng.
  5. Đảm bảo SLAS
    Các thỏa thuận mức dịch vụ đảm bảo hiệu suất và độ tin cậy nhất quán cho các nhu cầu của doanh nghiệp.

Câu hỏi thường gặp

Có, việc thu thập dữ liệu Google Trends toàn cầu, công khai hoàn toàn hợp pháp. Tuy nhiên, xin vui lòng đừng làm hỏng trang web của bạn bằng cách gửi quá nhiều yêu cầu trong một khoảng thời gian ngắn.

Google Trends không phản ánh đầy đủ hoạt động tìm kiếm. Google Trends lọc ra một số loại tìm kiếm, chẳng hạn như tìm kiếm được thực hiện bởi rất ít người. Xu hướng chỉ hiển thị dữ liệu cho các thuật ngữ phổ biến, vì vậy các thuật ngữ có khối lượng tìm kiếm thấp sẽ hiển thị là "0"

Không, Google Trends hiện chưa cung cấp API công khai. Tuy nhiên, bạn có thể truy cập dữ liệu Google Trends từ các API riêng tư trong các công cụ dành cho nhà phát triển bên thứ ba, chẳng hạn như Scrapeless.

Suy nghĩ cuối cùng

Google Trends là một công cụ tích hợp dữ liệu có giá trị cung cấp phân tích từ khóa và các chủ đề tìm kiếm phổ biến bằng cách phân tích các truy vấn tìm kiếm trên công cụ tìm kiếm. Trong bài viết này, chúng tôi đã trình bày chi tiết cách thu thập dữ liệu Google Trends bằng Python.

Tuy nhiên, việc thu thập dữ liệu Google Trends bằng mã Python luôn gặp phải trở ngại CAPTCHA. Điều này khiến việc trích xuất dữ liệu của bạn đặc biệt khó khăn. Mặc dù API Google Trends không khả dụng, nhưng API Google Trends của Scrapeless sẽ là công cụ lý tưởng của bạn!

Đăng ký ngay để có được công cụ thu thập dữ liệu Google Trends mạnh mẽ!

Tại Scrapeless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định hiện hành và chính sách bảo mật của trang web. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm pháp lý đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động thu thập dữ liệu nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem lại các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục