Công nghệ, Python

Cách trích xuất dữ liệu Google Trends trong Python

Google Trends là một trang web được tạo bởi Google để phân tích sự phổ biến của các truy vấn tìm kiếm trên Google Search trên hầu hết mọi khu vực, ngôn ngữ và danh mục. Trong hướng dẫn này, bạn sẽ học cách trích xuất dữ liệu Google Trends bằng Pytrends, một thư viện không chính thức trong Python, để trích xuất gần như tất cả những gì có sẵn trên trang web Google Trends.

Bắt đầu Để bắt đầu, hãy cài đặt các phụ thuộc cần thiết:

1
$ pip install pytrends seaborn

Ở đây chúng ta sử dụng seaborn để vẽ chart cho đẹp.

1
2
3
4
from pytrends.request import TrendReq
import seaborn
# for styling
seaborn.set_style("darkgrid")

Để bắt đầu với pytrends, bạn phải tạo một đối tượng TrendReq:

1
2
# initialize a new Google Trends Request Object
pt = TrendReq(hl="en-US", tz=360)

Tham số hl là ngôn ngữ chủ nhà để truy cập Google Trends, và tz là múi giờ offset.

Còn có các tham số khác như retries cho biết số lần thử lại nếu yêu cầu thất bại hoặc sử dụng proxies bằng cách truyền một danh sách vào tham số proxies.

Sự quan tâm theo thời gian.

Để lấy số lượng tìm kiếm tương đối của một danh sách từ khóa, chúng ta có thể sử dụng phương thức interest_over_time() sau khi xây dựng payload:

1
2
# set the keyword & timeframe
pt.build_payload(["Python", "Java"], timeframe="all")
1
2
3
# get the interest over time
iot = pt.interest_over_time()
iot

Các giá trị trong khoảng từ 0 (ít hoặc không có tìm kiếm) đến 100 (số tìm kiếm tối đa có thể).

Phương thức build_payload() chấp nhận nhiều tham số ngoài danh sách từ khóa:

cat: Bạn có thể chỉ định ID danh mục; nếu một yêu cầu tìm kiếm có thể có nhiều ý nghĩa, thiết lập danh mục sẽ loại bỏ sự rối. Bạn có thể kiểm tra trang này để lấy danh sách ID danh mục hoặc po gọi phương thức pytrends.categories() để lấy chúng.

geo: Viết tắt hai chữ của quốc gia để lấy tìm kiếm của một quốc gia cụ thể, chẳng hạn như US, FR, ES, DZ, v.v. Bạn cũng có thể lấy dữ liệu cho các tỉnh bằng cách chỉ định các viết tắt bổ sung như ‘GB-ENG’ hoặc ‘US-AL’.

timeframe: Đó là khoảng thời gian của dữ liệu chúng ta muốn trích xuất, ‘all’ có nghĩa là tất cả dữ liệu có sẵn trên Google từ khi bắt đầu, bạn có thể truyền vào các datetime cụ thể hoặc các mẫu trừ như ‘today 6-m’ sẽ trả về dữ liệu 6 tháng gần đây.

Hãy thử vẽ biểu đồ sự khác biệt tìm kiếm tương đối giữa Python và Java theo thời gian:

1
2
# plot it
iot.plot(figsize=(10, 6))

Hoặc, chúng ta có thể sử dụng phương thức get_historical_interest() để lấy dữ liệu theo giờ. Tuy nhiên, điều đó không hữu ích nếu bạn muốn tìm kiếm xu hướng dài hạn. Nó thích hợp cho các khoảng thời gian ngắn:

1
2
3
4
5
6
7
# get hourly historical interest
data = pt.get_historical_interest(
["data science"],
year_start=2022, month_start=1, day_start=1, hour_start=0,
year_end=2022, month_end=2, day_end=10, hour_end=23,
)
data

Chúng ta thiết lập ngày và thời gian bắt đầu và kết thúc và lấy kết quả. Bạn cũng có thể truyền catgeo như đã đề cập trước đó. Nếu có một thứ gì đó xuất hiện nhanh chóng, phương thức này sẽ giúp ích rất nhiều. Lưu ý rằng phương thức này có thể gây Google chặn địa chỉ IP của bạn, vì nó lấy nhiều dữ liệu nếu bạn chỉ định một khoảng thời gian mở rộng, vì vậy hãy nhớ điều đó.

Tìm kiếm theo khu vực

Hãy lấy  từ khóa cụ thể theo khu vực:

1
2
3
4
5
# the keyword to extract data
kw = "python"
pt.build_payload([kw], timeframe="all")
# get the interest by country
ibr = pt.interest_by_region("COUNTRY", inc_low_vol=True, inc_geo_code=True)

Chúng ta truyền “COUNTRY” cho phương thức interest_by_region() để lấy sự quan tâm theo quốc gia. Các giá trị khác có thể là ‘CITY’ cho dữ liệu cấp thành phố, ‘DMA’ cho dữ liệu cấp Metro và ‘REGION’ cho dữ liệu cấp vùng.

Chúng ta thiết lập inc_low_vol thành True để bao gồm các quốc gia có lượng tìm kiếm thấp, chúng ta cũng thiết lập inc_geo_code thành True để bao gồm mã địa lý của mỗi quốc gia.

Hãy sắp xếp các quốc gia theo sự quan tâm vào Python:

1
2
# sort the countries by interest
ibr[kw].sort_values(ascending=False)

Bạn cũng có thể vẽ biểu đồ top 10 nếu muốn bằng cách sử dụng

1
ibr[kw].sort_values(ascending=False)[:10].plot.bar().

Chủ đề và câu hỏi liên quan
Một tính năng thú vị khác là trích xuất các chủ đề liên quan đến từ khóa của bạn:

1
2
3
# lấy các chủ đề liên quan của từ khóa
rt = pt.relative_topics()
rt[kw]["top"]

Phương thức related_topics() trả về một từ điển Python của mỗi từ khóa; từ điển này có hai khung dữ liệu, một cho các chủ đề mới nổi và một cho các chủ đề hàng đầu nói chung.

Hoặc các truy vấn tìm kiếm liên quan:

1
2
3
# nhận các truy vấn liên quan đến từ khóa trước đó
rq = pt.relative_queries()
rq[kw]["top"]

Ngoài ra, còn có phương thức suggest(keyword) trả về các truy vấn tìm kiếm được gợi ý.Một tính năng nữa trên Google xu hướng là khả năng trích xuất các tìm kiếm xu hướng hiện tại trên từng khu vực:

1
2
3
# xu hướng tìm kiếm mỗi khu vực
ts = pt.trending_searches(pn="United_kingdom")
ts[:5]
1
2
# tìm kiếm theo xu hướng thời gian thực
pt.realtime_trending_searches()

Kết luận

Vậy, bạn đã biết cách tiện lợi trích xuất dữ liệu Google Trends bằng Python và với sự trợ giúp của thư viện pytrends. Bạn có thể kiểm tra kho lưu trữ Github của Pytrends để biết thêm thông tin chi tiết.

Nguồn : thepythoncode.com

Được gắn thẻ

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *