Quay lại blog

Quan sát các tính năng SERP mà không trộn lẫn chúng với xếp hạng tự nhiên

Michael Lee
Michael Lee

Expert Network Defense Engineer

14-Sep-2026

Tóm tắt:

  • Phân tích các tính năng SERP cần các đơn vị đo lường riêng biệt. Các vị trí hữu cơ, các trường đồ thị tri thức, quảng cáo và các quan sát tìm kiếm liên quan không nên được gộp lại thành một danh sách xếp hạng duy nhất.
  • Kiểm kê phản hồi thực tế trước khi viết các bộ thích ứng mô-đun. Một trường JSON cấp cao không tự động trở thành một tính năng tìm kiếm hiển thị, và một trường bị bỏ qua không chứng minh sự vắng mặt trên trang.
  • Giữ trạng thái với mỗi phép đo. Bộ sưu tập đang chờ xử lý, các trường chưa được ánh xạ, các giá trị null, các bộ chứa rỗng và các giá trị quan sát được đều xứng đáng có hồ sơ riêng biệt.

Một báo cáo đặt một liên kết hữu cơ, một bảng thông tin tri thức và một quảng cáo vào một danh sách xếp hạng sẽ mất đi ý nghĩa của từng vị trí mà nó chứa. Những yếu tố đó phục vụ các vai trò khác nhau, và dữ liệu của chúng có thể có các hình dạng khác nhau. Đếm chúng cùng nhau có thể tạo ra một bảng tính gọn gàng trong khi làm cho việc so sánh trở nên khó hiểu hơn.

API Tìm kiếm Google không cần scrapeless cung cấp dữ liệu tìm kiếm có cấu trúc có thể hỗ trợ phân tích các tính năng SERP. Nhiệm vụ triển khai đầu tiên là kiểm tra những gì mà một phản hồi hoàn chỉnh thực sự chứa. Hướng dẫn này xây dựng một danh sách các trường địa phương, sau đó giải thích cách ánh xạ các mô-đun đã được xác minh mà không thay đổi ý nghĩa của các xếp hạng hữu cơ.

Định nghĩa Đơn vị cho Mỗi Quan sát

Bắt đầu với câu hỏi mà báo cáo nên trả lời. Sự hiện diện của URL hữu cơ đặt ra câu hỏi liệu liên kết web nào xuất hiện trong mảng hữu cơ đã thu thập. Một quan sát đồ thị tri thức hỏi thông tin thực thể có cấu trúc nào đã được cung cấp. Một quan sát quảng cáo hỏi về một yếu tố tìm kiếm trả phí được xác định riêng biệt.

Cung cấp cho mỗi câu hỏi loại hồ sơ và mẫu số riêng. Thứ tự của mục trong mảng là thứ tự nguồn. Một vị trí hữu cơ được trả về thuộc về sơ đồ kết quả hữu cơ. Cả hai không thể được sử dụng lại như một vị trí quảng cáo hay một vị trí hình ảnh của bảng mà không có một ánh xạ được xác minh riêng.

Giữ chung truy vấn, yêu cầu hoàn chỉnh, thời gian quan sát và trạng thái thu thập giữa các hồ sơ này. Bối cảnh chia sẻ đó cho phép các nhà phân tích so sánh các mô-đun từ cùng một lần chạy mà không làm phẳng chúng thành một đơn vị duy nhất.

Các gợi ý tìm kiếm liên quan, khi có sẵn thông qua một trường đã được xác minh, thuộc về khám phá truy vấn. Chúng không phải là các trang hữu cơ xếp hạng. Lưu lại văn bản quan sát và nguồn gốc riêng của chúng thay vì gán vị trí hữu cơ tiếp theo sau liên kết web cuối cùng.

Các yêu cầu tiên quyết và Hình dạng Phản hồi Được Tài liệu hóa

Sử dụng Python và một bản sao JSON đã lưu cho danh sách địa phương. Các trường ngoài request, http_status, response, run_id, và received_at là metadata của bộ sưu tập. Mã này không gửi yêu cầu hoặc thiết lập phủ sóng tính năng cấp tài khoản.

Quy trình làm việc yêu cầu tìm kiếm của Google tài liệu về tác nhân scraper.google.search, POST https://api.scrapeless.com/api/v1/scraper/request, và tiêu đề x-api-token. Tập hợp trực tiếp cần khóa tài khoản của bạn. Các tham số tìm kiếm Google giải thích bối cảnh tìm kiếm nên đi kèm với mỗi quan sát.

Ví dụ nhanh hiện tại bao gồm một mảng organic_results, một đối tượng knowledge_graph, và một đối tượng local_results. Nó cũng chứa thông tin không phải mô-đun như metadatapagination. Đây là các ví dụ tài liệu, không phải kết quả thu thập cho bài viết này.

Lưu ý: Một yêu cầu API đã xác thực không được chạy ở đây. Danh sách địa phương đã được kiểm tra trên các bản sao tổng hợp. Các bộ thích ứng quảng cáo và tìm kiếm liên quan được cố tình để không cấu hình vì ví dụ nhanh này không thiết lập tên trường của chúng hoặc hợp đồng phản hồi hoàn chỉnh. Xác minh các ánh xạ đó với tài liệu hiện tại và đầu ra tài khoản thực tế trước khi thu thập chúng.

Tách Biến thể Vận chuyển Khỏi Trạng thái Trường

Kiểm tra kết quả HTTP trước khi kiểm tra nội dung mô-đun. HTTP 201 biểu thị một nhiệm vụ đang chờ xử lý; HTTP 200 mang dữ liệu nhiệm vụ. Một phản hồi đang chờ xử lý không nên tạo ra quan sát "tất cả các tính năng vắng mặt".

Trong một phản hồi hoàn chỉnh, duy trì sự khác biệt giữa một khóa bị thiếu, một giá trị null, một mảng rỗng và một đối tượng rỗng. Các kiểu giá trị JSON làm cho những sự phân biệt đó trở nên rõ ràng. Mô hình phân tích của bạn nên giữ chúng cho đến khi một bộ thích ứng đã xác minh gán một ý nghĩa hẹp hơn.
Một đối tượng trống có thể là một vị trí giữ cấu trúc. Một đối tượng không trống có thể chỉ chứa các giá trị lồng và trống. Cả hai điều kiện đều không xác lập rằng một người đã thấy một bảng kiến thức hữu ích trên trang đã được hiển thị. Tồn kho bên dưới báo cáo cấu trúc JSON; một bộ điều hợp đặc thù của mô-đun phải kiểm tra các trường lồng liên quan.

Chạy một Tồn Kho Trường Địa Phương

Lưu chương trình dưới tên module_inventory.py và chạy python3 module_inventory.py capture.json. Nó in ra một tồn kho được suy ra và để nguyên tệp đầu vào không thay đổi. Bộ phân tích cú pháp và tuần tự hóa JSON của Python xử lý đầu vào và đầu ra bằng cách sử dụng các hàm thư viện tiêu chuẩn.

python Copy
import argparse
import json
from pathlib import Path


def inventory(record):
    if not isinstance(record, dict):
        raise ValueError('Capture must be an object')
    status, payload = record.get('http_status'), record.get('response')
    base = {'run_id': record.get('run_id'), 'request': record.get('request'),
            'received_at': record.get('received_at'), 'fields': []}
    if status == 201:
        return dict(base, state='pending')
    if status != 200:
        return dict(base, state='transport_error' if status is None else 'http_error')
    if not isinstance(payload, dict):
        return dict(base, state='unmapped')
    fields = []
    for key, value in payload.items():
        if value is None:
            kind, state, size = 'null', 'null', None
        elif isinstance(value, list):
            kind, state, size = 'array', 'nonempty' if value else 'empty', len(value)
        elif isinstance(value, dict):
            kind, state, size = 'object', 'nonempty' if value else 'empty', len(value)
        else:
            kind = 'boolean' if isinstance(value, bool) else ('string' if isinstance(value, str) else 'number')
            state, size = 'scalar', None
        fields.append({'key': key, 'json_type': kind, 'field_state': state, 'size': size})
    return dict(base, state='inventoried', fields=fields)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('capture')
    args = parser.parse_args()
    print(json.dumps(inventory(json.loads(Path(args.capture).read_text(encoding='utf-8'))),
                     ensure_ascii=False, indent=2))

Đối với các mảng, size là số lượng phần tử của mảng. Đối với các đối tượng, đó là số lượng khóa ngay lập tức. Nó không phải là số lượng kết quả, số lượng bảng, hay một phép đo nội dung hiển thị. Các số vô hướng và null không có kích thước trong lược đồ ứng dụng này.

Các khóa bị thiếu không xuất hiện trong tồn kho thô này. So sánh tồn kho với danh sách trường dự kiến rõ ràng chỉ sau khi bạn đã thiết lập hợp đồng phản hồi cho bề mặt truy vấn đã chọn. Nếu không, một danh sách dự đoán có thể tạo ra các tính năng bị thiếu rõ ràng.

Bắt Đầu Cào Dữ Liệu với Scrapeless

Nâng cao quy trình làm việc cào dữ liệu và tự động hóa của bạn với Scrapeless!
Đăng ký hôm nay và nhận 5 đô la tín dụng miễn phíkhông cần thẻ tín dụng.

Nhận tín dụng miễn phí của bạn ngay bây giờ trong Bảng điều khiển Scrapeless.

Phân Đồ Các Trường Đã Xác Thực Vào Các Tập Dữ Liệu Riêng

Tạo một tập dữ liệu hữu cơ chứa tham chiếu chạy, thứ tự mục, vị trí trả lại, URL, tiêu đề, và đoạn trích khi có sẵn. Xác thực hình dạng của mảng hữu cơ trước khi diễn giải số lượng hàng của nó. Bảo tồn các giá trị không được hỗ trợ trong việc nắm bắt thô và đánh dấu vấn đề ánh xạ.

Đối với một tập dữ liệu đồ thị kiến thức, lưu trữ tham chiếu đối tượng thô và các trường đã xác thực riêng lẻ. Hình dạng đối tượng của phản hồi ví dụ là một điểm khởi đầu để kiểm tra, không phải là một lời hứa rằng mọi thuộc tính thực thể luôn được điền. Tránh một panel_present Boolean chỉ được suy ra từ sự tồn tại của khóa.

Một tập dữ liệu quảng cáo và một tập dữ liệu tìm kiếm liên quan có thể được dự trữ trong thiết kế ứng dụng của bạn, nhưng để bộ điều hợp của chúng ở chế độ không hoạt động cho đến khi tên trường, hình dạng và ngữ nghĩa trạng thái được xác thực. Một bộ điều hợp không hoạt động nên báo not_configured, không phải là không có quan sát. Nhãn đó mô tả ứng dụng của bạn, không phải là hỗ trợ API.

Giữ phiên bản lược đồ và phiên bản bộ điều hợp bên cạnh bản ghi được suy ra. Nếu một trường thay đổi, việc nắm bắt ban đầu vẫn có sẵn cho ánh xạ mới. Mô hình lược đồ JSON có thể giúp chính thức hóa các thuộc tính bắt buộc và tùy chọn mà không xem mọi thuộc tính tùy chọn bị thiếu như một thất bại trong việc thu thập.

So Sánh Tương Tự Với Tương Tự Trong Các Chạy

Một so sánh cần có phạm vi truy vấn khớp, quốc gia, ngôn ngữ và quy tắc thu thập. Những thay đổi có chủ đích thuộc báo cáo. Một thay đổi quốc gia có thể thay đổi ngữ cảnh tìm kiếm; nó không nên bị nhầm lẫn với một thay đổi tính năng do trang web của bạn gây ra.

So sánh các vị trí hữu cơ chỉ trong cùng một phương pháp quan sát hữu cơ đã xác định. So sánh trạng thái mô-đun trong cùng một phiên bản bộ điều hợp và ngữ nghĩa trường đã xác thực. Khi một bộ ánh xạ thay đổi, hãy xử lý lại cả hai việc nắm bắt hoặc nêu rõ rằng các bản ghi không thể so sánh trực tiếp.

Tách kích thước mẫu ra khỏi độ bao phủ thu thập. Một lần chạy đang chờ không gia nhập mẫu số cho tỷ lệ hiện diện của mô-đun. Một trường không được ánh xạ có thể yêu cầu một danh mục không xác định riêng biệt. Giải thích mẫu số để tỷ lệ phần trăm, nếu đội của bạn tính toán một, có một ý nghĩa có thể xem xét.

Bảo tồn chứng cứ cho một thay đổi với lần chạy trước, lần chạy hiện tại, các giá trị trường thô, phiên bản bộ ánh xạ, và kết quả xem xét. Mô hình nguồn gốc rất hữu ích để tách biệt quan sát khỏi quá trình biến đổi đã tạo ra báo cáo.

Kết Luận

Kiểm kê phản hồi, xác minh hợp đồng của từng mô-đun và lưu trữ xếp hạng tự nhiên riêng biệt với các tính năng tìm kiếm khác. Các trạng thái trường rõ ràng và phiên bản bộ điều hợp làm cho báo cáo kết quả dễ dàng xem xét hơn và ngăn chặn dữ liệu bị thiếu biến thành xu hướng tính năng tưởng tượng.

Sử dụng các quan sát mô-đun đã được xem xét như một đầu vào để phân tích khoảng trống nội dung khi quyết định những trải nghiệm tìm kiếm nào xứng đáng được nghiên cứu biên tập thêm.

Xây Dựng Quan Sát Tìm Kiếm Tiếp Theo Của Bạn

Sử dụng Scrapeless Google Search API để thu thập chứng cứ tìm kiếm cho quy trình làm việc này. Xem giá cả Scrapeless khi lập kế hoạch ngân sách thu thập của bạn, và giữ các tham số Tìm Kiếm Google bên cạnh cấu hình yêu cầu của bạn.

Thảo luận về việc triển khai của bạn với cộng đồng trên Discord hoặc Telegram.

Câu Hỏi Thường Gặp

H: Một knowledge_graph có chứng minh rằng một bảng có dữ liệu đã xuất hiện không?

Không. Kiểm tra giá trị và các trường lồng ghép đã được xác minh. Sự hiện diện của khóa và nội dung có dữ liệu hiển thị là những tuyên bố khác nhau.

H: Có thể thêm quảng cáo sau kết quả tự nhiên trong một danh sách xếp hạng không?

Điều đó sẽ trộn lẫn các đơn vị đo lường. Giữ lại các tập dữ liệu riêng biệt và chỉ sử dụng các vị trí có ý nghĩa được thiết lập bởi lược đồ liên quan.

H: Kiểm kê có đếm các tính năng tìm kiếm không?

Không. Nó ghi lại các loại JSON cấp cao nhất và kích thước container. Ý nghĩa cụ thể của tính năng yêu cầu một bộ điều hợp đã được xác minh.

H: Một trường bị bỏ qua có nghĩa là gì?

Nó có nghĩa là khóa đã vắng mặt trong đối tượng được ghi lại. Nó không, tự nó, thiết lập rằng tính năng tương ứng đã vắng mặt trong trang tìm kiếm đã được hiển thị.

H: Quảng cáo và các tìm kiếm liên quan có được thực hiện trong mẫu không?

Không. Các bộ điều hợp của chúng vẫn chưa được cấu hình chờ xác minh các trường phù hợp và kết quả tài khoản thực tế. Bài viết không phát minh những ánh xạ đó.

Tại Scrapless, 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 và chính sách bảo mật trang web hiện hành. 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 đố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 cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét 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