Logo Zephyrnet

Phân tích đối thủ cạnh tranh dựa trên Python: Thông tin chi tiết về từ khóa với API Serpstat — Blog Serpstat

Ngày:

Thông tin chi tiết về từ khóa của đối thủ sử dụng API với Python | SERPSTAT

607 8

SEO Đã đọc 13 phút 2 Tháng một, 2024
Phân tích đối thủ cạnh tranh dựa trên Python: Thông tin chi tiết về từ khóa với API Serpstat
Andreas Voniatis
Andreas Voniatis

API Serpstat có nhiều điểm cuối bao gồm hầu như tất cả các khía cạnh của quy trình làm việc SEO, từ nghiên cứu từ khóa đến phân tích backlink. Điểm cuối Từ khóa tên miền có thể được sử dụng không chỉ để trích xuất dữ liệu thô về khách hàng của bạn và đối thủ cạnh tranh của họ mà còn sử dụng các kỹ thuật khoa học dữ liệu để tạo ra cái nhìn sâu sắc. Dưới đây, chúng tôi sẽ trình bày cách thực hiện điều đó bằng cách sử dụng Python. 

Thông tin chi tiết có thể được sử dụng như một phần của đường dẫn dữ liệu điện toán đám mây để cung cấp năng lượng cho các báo cáo bảng điều khiển SEO của bạn như Looker, Power BI, v.v. 

Nhận mã thông báo API của bạn

Bạn sẽ cần mã thông báo API trước khi có thể truy vấn API SERPSTAT. API này sẽ xuất hiện trên bất kỳ trang tài liệu nào, chẳng hạn như trang trang API chính, như hình dưới đây:

API SERPSTAT

Sau khi sao chép mã thông báo API của mình, bạn có thể sử dụng mã thông báo này khi khởi động sổ ghi chép Jupyter iPython của mình.

Bắt đầu Notebook Jupyter iPython của bạn

Tất cả mã Python sẽ được thực thi trong môi trường sổ ghi chép Jupyter iPython. Tương tự, mã sẽ chạy trong sổ ghi chép COLAB nếu đó là tùy chọn của bạn. Khi bạn đã thiết lập và chạy nó, hãy nhập các hàm có trong thư viện:

yêu cầu nhập khẩu
gấu trúc nhập khẩu như pd
nhập numpy dưới dạng np
nhập khẩu json
từ nhập khẩu âm mưu *

Để thực hiện lệnh gọi API, bạn sẽ cần thư viện yêu cầu. 

Để xử lý các khung dữ liệu, tương tự như Excel trong Python, chúng tôi sẽ sử dụng Python và gán 'pd' làm bí danh tốc ký, đơn giản hóa việc sử dụng các hàm pandas. Chúng tôi cũng sẽ sử dụng Numpy, viết tắt là 'np' để thao tác dữ liệu trong khung dữ liệu.

Dữ liệu từ API thường ở định dạng từ điển, vì vậy JSON sẽ giúp chúng tôi giải nén kết quả thành các cấu trúc dữ liệu mà chúng tôi có thể đẩy vào khung dữ liệu.

api_token = ‘khóa api của bạn’

Điều này đã đạt được trước đó (xem ở trên).

api_url_pattern = 'https://api.serpstat.com/v{version}?token={token}'

Chúng tôi sẽ đặt mẫu URL cho phép chúng tôi truy vấn các điểm cuối khác nhau của API Serpstat. Phiên bản hiện tại là APIv4. Vì bạn sẽ gọi giao diện lập trình ứng dụng một vài lần nên điều này sẽ giúp tránh việc gõ mã lặp đi lặp lại.

api_url = api_url_pattern.format(version=4, token=api_token)

Đặt URL API để kết hợp phiên bản API và mã thông báo API của bạn. 

URL API

Nhận từ khóa tên miền

Phần thú vị. Bây giờ chúng tôi có thể trích xuất từ ​​khóa cho bất kỳ tên miền nào được hiển thị bằng cách truy vấn Từ khóa tên miền điểm cuối. Điều này sẽ hiển thị tất cả các từ khóa mà một tên miền xếp hạng trong top 100 cho một công cụ tìm kiếm nhất định.

Chúng tôi bắt đầu bằng cách đặt các tham số đầu vào mà API yêu cầu:

domain_keyword_params = {
    "id": "1",
    "method": "SerpstatDomainProcedure.getDomainKeywords",
    "params": {
        "domain": "deel.com",
        "se": "g_uk",
        "withSubdomains": False,
        "sort": {
            "region_queries_count": "desc"
        },
        "minusKeywords": [
            "deel", "deels"
        ],
        "size": "1000",
        "filters": {
            "right_spelling": False
        }
    }
}

Một điều cần lưu ý: điểm cuối Từ khóa tên miền được truy cập bằng cách đặt phương thức thành “SerpstatDomainProcedure.getDomainKeywords”

Bạn sẽ cần đặt tên miền của mình "lãnh địa" bên dưới và công cụ tìm kiếm của bạn bên dưới “g_uk”.

Trong trường hợp của chúng tôi, chúng tôi sẽ xem xét các từ khóa của deel.com trong Google UK. Có sẵn danh sách đầy đủ các công cụ tìm kiếm tại đây bao gồm các khu vực trên toàn thế giới của Google và Bing US.

Các tùy chọn bổ sung bao gồm từ khóa trừ (kết hợp phủ định), trong trường hợp của chúng tôi, chúng tôi chỉ quan tâm đến các từ khóa không phải thương hiệu để hiểu lưu lượng truy cập không phải trả tiền đến từ đâu.

Chúng tôi cũng đã thiết lập "kích thước" tham số thành 1,000 là đầu ra hàng tối đa có thể. 

Có các tham số thú vị khác như khả năng hạn chế API bao gồm các từ khóa nhất định ("Từ khóa") hoặc URL trang web trong tên miền (“url”).

Với bộ tham số, chúng ta có thể thực hiện yêu cầu bằng mã bên dưới:

domain_keyword_resp = requests.post(api_url, json=domain_keyword_params)

if domain_keyword_resp.status_code == 200:
    domain_keyword_result = domain_keyword_resp.json()
    print(domain_keyword_result)
else:
    print(domain_keyword_resp.text)

Kết quả của lệnh gọi API được lưu trữ trong miền_keyword_resp. Chúng ta sẽ đọc phản hồi bằng hàm json, lưu trữ dữ liệu vào tên miền_keyword_result.

Kết quả từ khóa tên miền

Cấu trúc if else được sử dụng để cung cấp cho bạn thông tin trong trường hợp lệnh gọi API không hoạt động như mong đợi, cho bạn biết phản hồi API là gì nếu không có dữ liệu hoặc lỗi thực hiện lệnh gọi.

Chạy in cuộc gọi tên miền_keyword_result trông như thế này:

{'id': '1', 
'result': 
{'data': [
{'domain': 'deel.com', 'subdomain': 'www.deel.com', 'keyword': 
'support for dell', 'keyword_length': 3, 'url': 'https://www.deel.com/',
 'position': 73, 'types': ['pic', 'kn_graph_card', 'related_search',
 'a_box_some', 'snip_breadcrumbs'], 'found_results': 830000000, 
'cost': 0.31, 'concurrency': 3, 'region_queries_count': 33100,
 'region_queries_count_wide': 0, 'geo_names': [], 'traff': 0,
 'difficulty': 44.02206115387234, 'dynamic': None}, 
{'domain': 'deel.com', 'subdomain': 'www.deel.com',
'keyword': 'hr and go',
 'keyword_length': 3, 'url': 'https://www.deel.com/',
 'position': 67, 'types': ['related_search', 'snip_breadcrumbs'],
 'found_results': 6120000000, 'cost': 0.18, 'concurrency': 4,
 'region_queries_count': 12100, 'region_queries_count_wide': 0,
 'geo_names': [], 'traff': 0, 'difficulty': 15.465889053157944,
 'dynamic': 3}, 

Khi làm việc với bất kỳ API nào, điều quan trọng là phải in cấu trúc dữ liệu để bạn biết cách phân tích cú pháp dữ liệu thành định dạng có thể sử dụng được. Không phải điều đó tạo ra một từ điển có nhiều khóa, trong đó dữ liệu chúng ta muốn được chứa trong các khóa dữ liệu kết quả. Các giá trị của dữ liệu nằm trong danh sách các từ điển trong đó mỗi từ điển đại diện cho một từ khóa.

Chúng tôi đã tạo mã bên dưới để trích xuất dữ liệu từ tên miền_keyword_result và đẩy nó đến tên miền_keyword_df khung dữ liệu:

domain_keyword_df = pd.DataFrame(domain_keyword_result['result']['data'])

Hãy hiển thị khung dữ liệu:

hiển thị(domain_keyword_df)

Trông giống như sau:

Khung dữ liệu

Khung dữ liệu hiển thị tất cả các từ khóa cho tên miền lên tới tối đa 1,000 hàng. Nó chứa các trường cột như:

  • vùng_queries_count: lượng tìm kiếm trong khu vực mục tiêu của bạn
  • url: URL xếp hạng cho từ khóa
  • vị trí: thứ hạng SERP
  • loại: Tính năng SERP
  • đồng thời: số lượng quảng cáo tìm kiếm có trả tiền có thể cho biết mức độ giao dịch và/hoặc mục đích thương mại.

Nếu bạn muốn nhiều hơn vì bạn đang làm việc trên một trang web lớn hơn, bạn có thể: 

2.Chạy nhiều cuộc gọi Từ khóa miền bằng cách sử dụng mã ở trên trên các URL trang web đó như một phần của vòng lặp for trong đó chỉ định URL làm tham số đầu vào cho 'url'.

Tạo tính năng dữ liệu

Để biết thông tin chi tiết, chúng tôi muốn tạo một số tính năng hỗ trợ tóm tắt dữ liệu thô. Theo cách tốt nhất, chúng tôi sẽ tạo một bản sao của khung dữ liệu và lưu nó vào khung dữ liệu mới có tên dk_enhanced_df.

dk_enhanced_df = domain_keyword_df.copy()

Đặt một cột mới gọi là 'đếm' sẽ cho phép chúng ta đếm mọi thứ theo đúng nghĩa đen như bạn sẽ thấy sau.

dk_enhanced_df['đếm'] = 1

Chúng tôi cũng muốn tạo một cột tùy chỉnh có tên là 'serp' cho biết danh mục trang SERP có thể hữu ích để xem sự phân bổ vị trí trang web theo SERP và được đưa vào báo cáo trang tổng quan.

<code data-code="dk_enhanced_df['serp'] = np.where(dk_enhanced_df['position'] dk_enhanced_df['serp'] = np.ở đâu(dk_enhanced_df['Chức vụ'] < 11, '1', 'Hư không') dk_enhanced_df['serp'] = np.ở đâu(dk_enhanced_df['Chức vụ'].giữa(11, 20), '2', dk_enhanced_df['serp']) dk_enhanced_df['serp'] = np.ở đâu(dk_enhanced_df['Chức vụ'].giữa(21, 30), '3', dk_enhanced_df['serp']) dk_enhanced_df['serp'] = np.ở đâu(dk_enhanced_df['Chức vụ'].giữa(31, 99), '4+', dk_enhanced_df['serp'])

SERP đã được mã hóa ở trên bằng cách sử dụng numpy.where giống như phiên bản Python của câu lệnh if Excel quen thuộc hơn.

Nếu bạn lưu ý cột loại, các giá trị sẽ chứa danh sách các loại kết quả tìm kiếm chung được hiển thị trên công cụ tìm kiếm cho từ khóa. 

Cột loại

Chúng ta có thể giải nén điều này và làm cho việc phân tích dễ dàng hơn bằng cách sử dụng mã hóa một nóng (OHE) kỹ thuật. OHE sẽ tạo các cột cho tất cả các giá trị loại kết quả và đặt số 1 ở nơi có kết quả cho từ khóa:

type_dummies = pd.get_dummies(dk_enhanced_df['types'].apply(pd.Series).stack()).
tổng (cấp=0)

Ghép các cột loại kết quả được mã hóa một lần với dk_enhanced_df Khung dữ liệu

dk_enhanced_df = pd.concat([dk_enhanced_df.drop(columns=['types']), type_dummies], axis=1)

hiển thị(dk_enhanced_df)

Hiển thị(dk_enhanced_df)

Nhờ OHE và các cải tiến khác, giờ đây chúng tôi có khung dữ liệu mở rộng với các cột giúp phân tích và tạo thông tin chi tiết dễ dàng hơn.

Bắt đầu hành trình SEO của bạn với sự tự tin! 

Đăng ký dùng thử 7 ngày của chúng tôi và đi sâu vào thế giới phân tích SEO nâng cao bằng API của chúng tôi. Không có cam kết, chỉ là thăm dò thuần túy. 

7-Day dùng thử miễn phí

Khám phá dữ liệu từ khóa tên miền

Chúng ta sẽ bắt đầu bằng cách xem xét các thuộc tính thống kê của dữ liệu từ khóa tên miền bằng cách sử dụng diễn tả() chức năng:

dk_enhanced_df.describe()

dk_enhanced_df.describe()

Hàm lấy tất cả các cột số trong khung dữ liệu để ước tính các thuộc tính thống kê của chúng như giá trị trung bình (trung bình), độ lệch chuẩn (std) để đo tốc độ phân tán so với giá trị trung bình, số lượng điểm dữ liệu (số lượng) và phần trăm như thứ 25 (25%) như được hiển thị ở trên.

Mặc dù chức năng này hữu ích như một bản tóm tắt, nhưng từ góc độ kinh doanh, việc tổng hợp dữ liệu thường hữu ích. Ví dụ, sử dụng sự kết hợp của chia nhómbồ kết chúng ta có thể đếm có bao nhiêu từ khóa trên SERP 1, v.v. bằng cách sử dụng mã bên dưới:

serp_agg = dk_enhanced_df.groupby('serp').agg({'count': 'sum'}).reset_index()

Hàm nhóm nhóm khung dữ liệu theo cột (giống như bảng Excel Pivot), sau đó tổng hợp các cột khác. Trong trường hợp sử dụng của chúng tôi, chúng tôi nhóm theo SERP để đếm xem có bao nhiêu từ khóa trong mỗi SERP như được hiển thị bên dưới:

hiển thị(serp_agg)

hiển thị(serp_agg)

Hầu hết các từ khóa nằm ngoài trang 3 như được hiển thị bằng giá trị đếm 861 cho SERP 4+.

Nếu chúng tôi muốn trực quan hóa dữ liệu cho đối tượng không phải là chuyên gia SEO, chúng tôi có thể sử dụng các hàm ggplot của cốt truyện:

serp_dist_plt = (ggplot(serp_agg, 
                        aes(x = 'serp', y = 'count')) + 
                    geom_bar(stat = 'identity', alpha = 0.8, fill = 'blue') +
                    labs(y = 'SERP', x = '') + 
                    theme_classic() +            
                    theme(legend_position = 'none')
                   )

ggplot lấy 2 đối số chính là khung dữ liệu và tính thẩm mỹ (aes). aes chỉ định các phần của khung dữ liệu sẽ được ánh xạ lên biểu đồ. Các lớp bổ sung được thêm vào mã để xác định loại biểu đồ, nhãn trục, v.v. Trong trường hợp của chúng tôi, chúng tôi đang sử dụng geom_bar là biểu đồ thanh.

Mã được lưu vào đối tượng biểu đồ serp_dist_plt mà khi chạy sẽ hiển thị biểu đồ:

serp_dist_plt

serp_dist_plt

Biểu đồ được tạo ra sẽ tạo ra một phiên bản trực quan của serp_agg dataframe, giúp so sánh số lượng vị trí từ khóa giữa các SERP dễ dàng hơn nhiều.

Thông tin chi tiết về đối thủ từ từ khóa tên miền

Mặc dù điều này thật tuyệt vời nhưng các con số cho một tên miền trang web không sâu sắc bằng khi so sánh với các trang web khác cạnh tranh trong cùng một không gian tìm kiếm. Trong ví dụ trên, deel.com có ​​14 từ khóa trong SERP 1. Điều đó có tốt không? Xấu? Trung bình? Làm sao chúng ta có thể biết được?

Dữ liệu miền cạnh tranh bổ sung bối cảnh và ý nghĩa đó, đây là trường hợp sử dụng tốt để chi tiêu các khoản tín dụng API đó. Bằng cách điều chỉnh mã ở trên, chúng tôi có thể lấy dữ liệu trên một số miền để thu được dữ liệu có ý nghĩa hơn.

Ví dụ: sau khi sử dụng cùng một điểm cuối API trên các trang web của đối thủ cạnh tranh hoạt động trong cùng một không gian, giờ đây chúng tôi có một bảng hiển thị số lượng từ khóa theo SERP cho mỗi tên miền:

Điểm cuối API

Ở định dạng trực quan hơn, chúng tôi nhận được:

Định dạng trực quan hơn

Với bối cảnh được bổ sung, chúng ta có thể thấy rằng Deel có thể hoạt động kém hơn trên SERP 1 so với các đối thủ cạnh tranh khác. Chúng ta cũng có thể thấy rằng Bamboo HR đang dẫn đầu, tiếp theo là remote.com. Trên thực tế, Bamboo là trang duy nhất có nhiều SERP 1 hơn SERP 2.

Với API, chúng tôi không chỉ có thể chắt lọc các xu hướng từ dữ liệu mà còn có dữ liệu thực tế để xem những từ khóa SERP nào đang hỗ trợ khả năng hiển thị của Bamboo. Trong Python, đó sẽ là:

tre_serp_1s = mdk_enhanced_df.loc[mdk_enhanced_df['domain'] == 'bamboohr.com'].copy()

Ở trên lấy khung dữ liệu với dữ liệu API kết hợp cho các miền và bộ lọc cho miền là trehr.com 

hiển thị(tre_serp_1s)

hiển thị(tre_serp_1s)

Sau đó, điều này có thể được xuất sang Excel cho mục đích lập kế hoạch nội dung.

Thông tin chi tiết về từ khóa tên miền khác

Mã cho đến nay tập trung vào việc trích xuất dữ liệu từ API từ khóa tên miền và cho thấy chỉ một cột có thể tạo ra thông tin chi tiết về một tên miền và nhiều tên miền như thế nào.

Có thể tạo thêm bao nhiêu thông tin chi tiết từ việc khám phá các cột khác và so sánh các tên miền của đối thủ cạnh tranh trong điểm cuối Từ khóa tên miền. Đó là trước khi chúng tôi bắt đầu sử dụng các điểm cuối khác được cung cấp cho chúng tôi từ API SERPSTAT.

Ví dụ: loại kết quả nào đang xuất hiện nhiều nhất? Các loại kết quả nhất định có tăng theo thời gian có thể giúp chúng tôi hiểu xu hướng của Google không? Đoạn mã giải nén cột loại kết quả ở trên sẽ giúp bạn bắt đầu.

Ý kiến ​​​​của các tác giả bài đăng của khách có thể không trùng với ý kiến ​​​​của ban biên tập Serpstat và các chuyên gia.

Tìm thấy một lỗi? Chọn nó và nhấn Ctrl + Enter để cho chúng tôi biết

Khám phá thêm các công cụ SEO

Công cụ kiểm tra backlink

kiểm tra backlink cho bất kỳ trang web nào. Tăng sức mạnh của hồ sơ backlink của bạn

API cho SEO

Tìm kiếm dữ liệu lớn và nhận kết quả bằng cách sử dụng API SEO

Bài viết được đề xuất

Dịch vụ và Công cụ khác

Trung tâm cộng đồng và học tập

Nền tảng SEO tất cả trong một dành cho nhóm và cá nhân
Ra đời và phát triển bởi SEO và PPC agency Netpeak vào năm 2013. Từ năm 2015 hoạt động độc lập như một phần của Netpeak Group.

Ra đời và phát triển bởi SEO và PPC agency Netpeak vào năm 2013. Từ năm 2015 hoạt động độc lập như một phần của Netpeak Group.
Đăng ký tin

Chia sẻ bài viết này với bạn bè của bạn

Bạn có chắc không?

Cảm ơn bạn, chúng tôi đã lưu cài đặt gửi thư mới của bạn.

Báo cáo lỗi

Đang tải, vui lòng đợi ...

thư túi Flipboard sứ giả điện tín
tại chỗ_img

Tin tức mới nhất

tại chỗ_img