🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

Cách thu thập dữ liệu từ Thư viện Quảng cáo Facebook bằng Trình duyệt Thu thập dữ liệu không có lỗi

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

29-Jun-2026

Tóm tắt:

  • Thư viện Quảng cáo Facebook là một bề mặt công khai — xem quảng cáo trong đó không yêu cầu đăng nhập. Bất kỳ ai cũng có thể mở facebook.com/ads/library, tìm kiếm một nhà quảng cáo hoặc từ khóa, và đọc tất cả các quảng cáo đang hoạt động và không hoạt động mà một Trang đang chạy, bao gồm tên nhà quảng cáo, nội dung quảng cáo và thời gian mỗi quảng cáo đã chạy.
  • Trang được render hoàn toàn từ phía khách hàng, vì vậy HTTP bình thường trả về một shell rỗng. Các thẻ quảng cáo được vẽ bằng JavaScript sau phản hồi ban đầu, và kết quả ở phía sau một kiểm tra chống bot, vì vậy một yêu cầu requests.get đơn giản không thấy quảng cáo nào cả.
  • Trình duyệt Scraping Không có Rác render trang từ phía đám mây và trả về DOM đã vẽ. Kết nối qua Giao thức DevTools của Chrome với lối ra dân cư từ Mỹ và một phiên đã được làm nóng trả về kết quả đã render hoàn toàn, có thể phân tích như bất kỳ trang tĩnh nào.
  • Khám phá mỗi quảng cáo từ văn bản neo ổn định ID Thư viện: , không phải một lớp CSS đã băm. Mỗi thẻ quảng cáo mang một nhãn ID Thư viện: <chữ số>; leo từ neo đó đến chứa thẻ đơn của nó vẫn sống sót qua sự thay đổi tên lớp React phá vỡ các bộ chọn mong manh.
  • Một tìm kiếm từ khóa đã trả về 27 thẻ quảng cáo trong lần render đầu tiên và 104 sau khi cuộn lưới sáu lần. Phân trang ở đây là cuộn vô hạn: lưới thêm nhiều thẻ khi bạn cuộn, vì vậy bạn đọc DOM sau mỗi lần cuộn cho đến khi số lượng dừng lại.
  • Miễn phí để bắt đầu. Tài khoản Scrapeless mới bao gồm thời gian chạy Trình duyệt Scraping miễn phí — đăng ký tại app.scrapeless.com.

Giới thiệu: đọc các quảng cáo công khai mà bất kỳ thương hiệu nào đang chạy

Thư viện Quảng cáo Facebook là lưu trữ minh bạch công khai của Meta về các quảng cáo đang chạy trên Facebook và Instagram. Mỗi quảng cáo đang hoạt động — và, đối với quảng cáo về các vấn đề xã hội, bầu cử và chính trị, mọi quảng cáo không hoạt động cũng vậy — được liệt kê với nhà quảng cáo, sáng tạo, và ngày mà nó đã chạy. Các nhà nghiên cứu cạnh tranh, nhóm an toàn thương hiệu và nhà phân tích quảng cáo đọc nó để xem chính xác thông điệp mà một Trang đang đưa ra trước người dùng ngay bây giờ.

Trở ngại nằm ở việc render, không phải ở truy cập. Xem quảng cáo công khai không cần tài khoản, nhưng trang xây dựng toàn bộ lưới kết quả của nó trong trình duyệt sau phản hồi đầu tiên, và lưới bị kiểm soát bởi phòng chống lưu lượng tự động mà một khách hàng HTTP bình thường kích hoạt ngay lập tức. Tải xuống URL bằng requests và các thẻ quảng cáo đơn giản là không có trong byte bạn nhận lại — chúng được vẽ sau đó bằng JavaScript không bao giờ chạy. Đánh dấu được render lại dựa vào các tên lớp React đã xoay chuyển, đã băm, vì vậy một bộ chọn gắn vào một chuỗi lớp sẽ bị hỏng trong lần triển khai front-end tiếp theo.

Hướng dẫn này xây dựng quá trình trích xuất bằng Python dựa trên Trình duyệt Scraping Không có Rác, một trình duyệt đám mây render trang với lối ra dân cư của Mỹ và trả về DOM hoàn chỉnh. Mô hình là vòng lặp render → khám phá → trích xuất → phân trang giống như bất kỳ trình thu thập nào, với một điểm nhấn: các neo phát hiện dựa trên văn bản ổn định ID Thư viện: mà mỗi thẻ in ra, vì vậy việc phân tích vẫn sống sót qua sự thay đổi tên lớp. Chia tách render tĩnh và động, trong JavaScript, được đề cập trong hướng dẫn Cheerio và Puppeteer.


Bạn Có Thể Làm Gì Với Nó

  • Theo dõi sáng tạo trực tiếp của đối thủ. Lấy mọi quảng cáo đang hoạt động mà một Trang đang chạy để xem thông điệp hiện tại, ưu đãi, và địa điểm đến.
  • Xây dựng tập dữ liệu xu hướng sáng tạo. Thu thập nội dung quảng cáo từ nhiều nhà quảng cáo trong một danh mục và phân tích ngôn ngữ, điểm nhấn, và định dạng mà lặp lại.
  • Giám sát thời gian chiến dịch. Đọc ngày "Bắt đầu chạy" trên quảng cáo đang hoạt động và khoảng thời gian chạy trên quảng cáo không hoạt động để lập bản đồ khi các chiến dịch khởi động và kết thúc.
  • Kiểm tra sự hiện diện của thương hiệu. Xác nhận quảng cáo nào liên kết lại với một Trang đã được xác minh và bắt gặp những kẻ mạo danh chạy quảng cáo dưới một tên tương tự.
  • Cung cấp dữ liệu cho một đường ống trí tuệ quảng cáo. Biến lưới kết quả đã render thành các hàng có cấu trúc — nhà quảng cáo, ID thư viện, trạng thái, ngày — mà phân tích hoặc mô hình phía dưới có thể đọc.
  • Đạt được lưới mà HTTP bình thường không thể. Thư viện Quảng cáo render từ phía khách hàng sau một kiểm tra chống bot, vì vậy hãy nâng cấp nó lên một trình duyệt đám mây và giữ nguyên mã phân tích mà bạn sẽ sử dụng trên một trang tĩnh.

Tại Sao Lại Là Trình Duyệt Scraping Không có Rác

Trình duyệt Scraping Không có Rác là một trình duyệt đám mây tùy biến, chống phát hiện, được thiết kế cho các bộ thu thập web và đại lý AI. Đặc biệt cho Thư viện Quảng cáo, nó đem lại:

  • Rendering JavaScript ở phía đám mây. Lưới kết quả được vẽ sau phản hồi đầu tiên; trình duyệt đám mây chạy trang và trả về một DOM đã chứa các thẻ quảng cáo, vì vậy BeautifulSoup phân tích nó như HTML tĩnh.
  • Máy chủ proxy dân cư tại hơn 195 quốc gia. Thư viện Quảng cáo thay đổi nội dung của nó theo quốc gia người xem, vì vậy việc gắn lối ra dân cư của Mỹ trả về các quảng cáo giống như những gì một khách truy cập từ Mỹ sẽ thấy.
  • Nhận diện chống phát hiện. Trang web đặt lưới của nó phía sau kiểm tra bot; trình duyệt đám mây cung cấp bề mặt trình duyệt giống như con người để lưới được hiển thị thay vì một thử thách.
  • Một khóa API cho toàn bộ. SDK Python tạo ra một browser_ws_endpoint mà bạn kết nối với Playwright qua CDP, và cùng một khóa bao phủ cả thời gian chạy.

Nhận khóa API của bạn trên kế hoạch miễn phí tại app.scrapeless.com.


Các yêu cầu cần có

  • Python 3.10 hoặc mới hơn
  • SDK scrapeless, playwrightbeautifulsoup4
  • Tài khoản Scrapeless và khóa API — đăng ký tại app.scrapeless.com
  • Kiến thức cơ bản về terminal

Cài đặt

Cài đặt SDK, khách hàng giao thức, và trình phân tích HTML:

bash Copy
pip install scrapeless playwright beautifulsoup4
playwright install chromium

playwright install chromium tải về một khách hàng giao thức địa phương một lần; việc hiển thị thực tế vẫn diễn ra trong đám mây Scrapeless. SDK scrapeless tạo ra phiên trình duyệt và beautifulsoup4 phân tích DOM trả về. Xuất khóa của bạn trước khi chạy bất kỳ thứ gì: export SCRAPELESS_API_KEY=your_api_token_here.


Bước 1 — Hiển thị trang Thư viện Quảng cáo và xác nhận quảng cáo có mặt

Một lần quét bắt đầu với việc hiển thị sạch. URL Thư viện Quảng cáo tiếp nhận tìm kiếm trong các tham số truy vấn — q cho từ khóa, country cho địa lý người xem, active_statusad_type cho các bộ lọc. Kết nối với trình duyệt đám mây, làm nóng phiên trên trang chủ Facebook công khai trước đó để yêu cầu mang theo bề mặt trình duyệt đã thiết lập, sau đó tải URL tìm kiếm và đếm số thẻ quảng cáo trước khi viết một bộ chọn trường.

python Copy
import re
from scrapeless import Scrapeless
from scrapeless.types import ICreateBrowser
from playwright.sync_api import sync_playwright

URL = ("https://www.facebook.com/ads/library/"
       "?active_status=all&ad_type=all&country=US&q=nike")
LIB = re.compile(r"Library ID:\s*\d+")

client = Scrapeless()  # đọc SCRAPELESS_API_KEY từ môi trường
session = client.browser.create(ICreateBrowser(proxy_country="US", session_ttl=240))

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(session.browser_ws_endpoint)
    ctx = browser.contexts[0] if browser.contexts else browser.new_context()
    page = ctx.pages[0] if ctx.pages else ctx.new_page()
    page.goto("https://www.facebook.com/", wait_until="domcontentloaded", timeout=60_000)
    page.wait_for_timeout(3_000)  # làm nóng phiên trên trang chủ công khai trước
    page.goto(URL, wait_until="domcontentloaded", timeout=60_000)
    page.wait_for_timeout(8_000)  # cho phép lưới kết quả hiển thị phía khách hàng
    html = page.content()
    browser.close()

print("bytes html:", len(html), "| số thẻ quảng cáo trên lần hiển thị đầu tiên:", len(LIB.findall(html)))

Dòng lệnh này in ra như bytes html: 1796025 | số thẻ quảng cáo trên lần hiển thị đầu tiên: 27 — khoảng 1.8 MB HTML đã hiển thị chứa 27 thẻ quảng cáo trên lần vẽ đầu tiên (số byte có thể thay đổi tùy thuộc vào từng lần tải khác nhau). Tiêu đề trang là Thư viện Quảng cáo, và Facebook ghi lại URL để thêm các giá trị mặc định của riêng nó (search_type=keyword_unordered, media_type=all, một khối sort_data). Việc sử dụng wait_until="domcontentloaded" cùng với một thời gian trễ cố định là có chủ đích: Thư viện Quảng cáo phát các yêu cầu phân tích và cá nhân hóa mà không bao giờ ngừng lại, vì vậy việc chờ đợi mạng tĩnh sẽ làm chậm quá trình cho đến khi hết thời gian. Làm nóng trên trang chủ trước là điều cần thiết để lưới hiển thị thay vì một thử thách chống bot.


Bước 2 — Khám phá từng thẻ quảng cáo từ một điểm neo ổn định, sau đó trích xuất các trường của nó

Tên lớp React của lưới kết quả được băm và thay đổi giữa các lần triển khai, vì vậy một bộ chọn như div.x1lliihq là một rủi ro. Tín hiệu bền vững là văn bản mà mỗi thẻ in ra: Library ID: <các chữ số>. Tìm kiếm điểm neo dựa trên nhãn đó, lùi lên tổ tiên lớn nhất vẫn chỉ bọc đúng một ID thư viện — đó là một thẻ quảng cáo — sau đó đọc các trường từ văn bản và các liên kết bên trong nó.

python Copy
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")  # html từ Bước 1

def single_card(node):
    # Tổ tiên lớn nhất mà cây con của nó vẫn giữ đúng một "Library ID:".
    best, n = node.parent, node.parent
    while n is not None and len(LIB.findall(n.get_text(" ", strip=True))) == 1:
        best, n = n, n.parent
    return best

def fields(card):
    txt = card.get_text("\n", strip=True)
    lib = re.search(r"Library ID:\s*(\d+)", txt)
    status = "Đang hoạt động" if re.search(r"\bActive\b", txt) else (
        "Không hoạt động" if "Inactive" in txt else None)
    started = re.search(r"Đã bắt đầu chạy vào ([A-Z][a-z]+ \d{1,2}, \d{4})", txt)
    ran = re.search(r"([A-Z][a-z]+ \d{1,2}, \d{4}) - ([A-Z][a-z]+ \d{1,2}, \d{4})", txt)
    advertiser = None
    for a in card.find_all("a", href=True):
        if re.match(r"https://www\.facebook\.com/[^/?#]+/?$", a["href"]) and a.get_text(strip=True):
python Copy
advertiser = a.get_text(strip=True)
            break
    return {
        "library_id": lib.group(1) if lib else None,
        "advertiser": advertiser,
        "status": status,
        "started_running": started.group(1) if started else None,
        "active_range": list(ran.groups()) if ran else None,
    }

seen, cards = set(), []
for node in soup.find_all(string=LIB):
    card = single_card(node)
    if id(card) not in seen:
        seen.add(id(card))
        cards.append(card)

records = [fields(c) for c in cards]
print("đã trích xuất hồ sơ quảng cáo:", len(records))
for r in records[:4]:
    print(r)

Điều này trích xuất 27 hồ sơ. Một vài cái đầu tiên in ra như các nhà quảng cáo thật và ngày tháng — {'library_id': '1869276447125570', 'advertiser': 'Nike', 'status': 'Đang hoạt động', 'started_running': '17 Tháng 3, 2026', 'active_range': None}. Lưu ý hai hình thức ngày tháng: một quảng cáo đang hoạt động in ra Bắt đầu chạy vào <ngày>, trong khi một quảng cáo không hoạt động in ra một khoảng chạy <bắt đầu> - <kết thúc> thay vào đó, vì vậy parser đọc cả hai và để trường khác là None. Nhà quảng cáo được lấy từ liên kết đầu tiên chỉ vào một URL Trang trống (facebook.com/<page>/), đó là nơi ổn định nhất tên Trang xuất hiện trong thẻ.

Nhận khóa API của bạn trên kế hoạch miễn phí: app.scrapeless.com


Bước 3 — Tải thêm quảng cáo bằng cách cuộn lưới kết quả

Thư viện quảng cáo không phân trang bằng số trang — nó thêm nhiều thẻ khi bạn cuộn. Mẫu đáng tin cậy là cuộn lưới, chờ cho các thẻ mới hiển thị, đọc lại DOM, và lặp lại cho đến khi số thẻ ngừng tăng. Đếm các lần xuất hiện Library ID: sau mỗi lần cuộn cho bạn biết khi nào lưới đã cạn kiệt cho tìm kiếm đó.

python Copy
session = client.browser.create(ICreateBrowser(proxy_country="US", session_ttl=240))

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(session.browser_ws_endpoint)
    ctx = browser.contexts[0] if browser.contexts else browser.new_context()
    page = ctx.pages[0] if ctx.pages else ctx.new_page()
    page.goto("https://www.facebook.com/", wait_until="domcontentloaded", timeout=60_000)
    page.wait_for_timeout(3_000)
    page.goto(URL, wait_until="domcontentloaded", timeout=60_000)
    page.wait_for_timeout(8_000)

    def card_count():
        return len(LIB.findall(page.content()))

    counts = [card_count()]
    for _ in range(6):  # lưới tải thêm thẻ khi bạn cuộn
        page.mouse.wheel(0, 6_000)
        page.wait_for_timeout(2_500)
        counts.append(card_count())
    browser.close()

print("số thẻ sau mỗi lần cuộn:", counts)

Điều này in ra số thẻ sau mỗi lần cuộn: [27, 37, 47, 66, 75, 85, 104] — lưới đã tăng từ 27 thẻ khi hiển thị lần đầu lên 104 sau sáu lần cuộn. Khi hai số đếm liên tiếp giống nhau, lưới đã ngừng tải cho truy vấn đó và bạn có thể dừng cuộn. Giữ cho bước cuộn khiêm tốn và thời gian dừng đủ dài để các thẻ mới được hiển thị, nếu không bạn sẽ đọc số đếm trước khi lưới bắt kịp.


Bước 4 — Ghi đầu ra có cấu trúc

Danh sách records từ Bước 2 đã là một danh sách các từ điển với các khóa nhất quán, vì vậy việc ghi nó vào CSV hoặc JSON chỉ cần một vài dòng. Quyết định sơ đồ trước — cùng một khóa trên mỗi hàng — vì vậy một trường vắng mặt trở thành None, không bao giờ là một sự cố.

python Copy
import csv
import json

# records là danh sách các dict được xây dựng trong Bước 2 (chạy lại phân tích sau
# lần cuộn cuối cùng trong Bước 3 để ghi lại mọi thẻ đã tải).
fieldnames = ["library_id", "advertiser", "status", "started_running", "active_range"]
with open("facebook_ads.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    for row in records:
        writer.writerow({**row, "active_range": json.dumps(row["active_range"])})

with open("facebook_ads.json", "w", encoding="utf-8") as f:
    json.dump(records, f, ensure_ascii=False, indent=2)

print("đã ghi", len(records), "hàng vào facebook_ads.csv và facebook_ads.json")

Đó là toàn bộ vòng lặp: hiển thị lưới trong trình duyệt đám mây, phát hiện mỗi thẻ từ neo Library ID:, trích xuất nhà quảng cáo và ngày, cuộn để tải thêm, và lưu trữ. Hoán đổi các tham số qcountry trong URL để chỉ định nó đến bất kỳ nhà quảng cáo, từ khóa hoặc khu vực nào mà Thư viện quảng cáo phục vụ.


Xử lý dữ liệu quảng cáo một cách có trách nhiệm

Thư viện quảng cáo là một bề mặt công khai minh bạch, và các quảng cáo trong đó được xuất bản bởi các thương hiệu để bất kỳ ai cũng có thể xem — nhưng các hồ sơ vẫn gắn với các nhà quảng cáo xác định, vì vậy hãy thu thập chúng một cách cẩn thận:

  • Giữ trên bề mặt công khai. Mọi thứ trong hướng dẫn này đọc cùng một lưới kết quả ẩn danh, không cần đăng nhập mà bất kỳ khách truy cập nào cũng có thể thấy. Đừng xác thực để đạt được các chế độ xem bị khóa hoặc kéo bất cứ điều gì mà trang công khai không hiển thị.
  • Thu thập dữ liệu quảng cáo và nhà quảng cáo, không thu thập dữ liệu cá nhân. Những trường thông tin hữu ích ở đây là Trang nhà quảng cáo, nội dung quảng cáo và thời gian chạy. Tránh thu thập tên người bình luận, phản ứng hoặc bất kỳ thông tin cá nhân nào liên quan đến quảng cáo.
  • Giảm thiểu và tập trung vào mục đích. Lấy các trường mà phân tích của bạn cần và không nhiều hơn, và chỉ giữ lại chúng trong thời gian mà trường hợp sử dụng yêu cầu.
  • Tôn trọng các điều khoản và giới hạn tần suất của nền tảng. Tuân thủ Điều khoản Dịch vụ của Meta và Giao thức loại trừ Robot, và giữ cho lượng yêu cầu lịch sự; giới hạn lưu lượng ra và giới hạn độ đồng thời thay vì gây áp lực lên lưới.

Đối với công việc nhạy cảm về thương mại hoặc tuân thủ quy định, hãy xem xét các điều khoản của nền tảng áp dụng và tư vấn luật sư trước khi xây dựng một đường dẫn lặp lại.


Những gì bạn nhận được

Sau khi phân tích, mỗi thẻ quảng cáo sẽ giảm thành một bản ghi phẳng với một lược đồ nhất quán:

json Copy
[
  {
    "library_id": "1869276447125570",
    "advertiser": "Nike",
    "status": "Active",
    "started_running": "Mar 17, 2026",
    "active_range": null
  },
  {
    "library_id": "308819044896583",
    "advertiser": "Nike",
    "status": "Inactive",
    "started_running": null,
    "active_range": ["Aug 15, 2023", "Jul 24, 2025"]
  }
]
// Lược đồ phản ánh chính xác những gì phân tích Bước 2 xuất ra. Các giá trị trường là mẫu minh họa.

Một vài điều cần mong đợi trong thực tế:

  • Số lượng thẻ thay đổi giữa các lần chạy. Cùng một truy vấn có thể trả về một số lượng thẻ hơi khác nhau tùy thuộc vào những quảng cáo nào đang hoạt động và mức độ mà lưới đã tải; hãy coi số lượng như một bức tranh tạm thời, không phải là tổng cố định.
  • Hai hình dạng ngày, một lược đồ. Các quảng cáo đang hoạt động sẽ có một ngày Bắt đầu chạy vào; các quảng cáo không hoạt động sẽ có một khoảng thời gian chạy. Bộ phân tích sẽ điền vào trường nào có sẵn và để lại trường kia là None.
  • Chốt vào văn bản, kiểm tra lại khi có thay đổi. Nhãn ID Thư viện: bền vững hơn nhiều so với các lớp React đã băm, nhưng Meta vẫn thay đổi cách bố trí thẻ theo định kỳ — hãy kiểm tra lại các mẫu khám phá và trường khi mã đánh dấu thay đổi.
  • Giới hạn lưu lượng ra của bạn. proxy_country="US" giữ cho các quảng cáo trả về nhất quán với người xem ở Hoa Kỳ; thay đổi mã quốc gia để phù hợp với khu vực bạn cần, vì Thư viện Quảng cáo thay đổi kết quả theo quốc gia.

Kết luận: mở rộng đường ống thu thập dữ liệu Thư viện Quảng cáo của bạn

Đọc Thư viện Quảng cáo Facebook giảm xuống còn bốn động tác: hiển thị lưới kết quả trong trình duyệt đám mây, khám phá từng quảng cáo từ chốt ID Thư viện: ổn định, trích xuất nhà quảng cáo và thời gian chạy, và cuộn để tải thêm cho đến khi số lượng ổn định. Một phần đơn giản HTTP, ngay cả với ngữ nghĩa HTTP chính xác, không thể làm được — chạy lưới phía client phía sau kiểm tra chống bot — tăng lên dễ dàng với Scrapeless Scraping Browser, cái mà hiển thị trang và trả lại DOM mà bộ phân tích của bạn đã hiểu.

Từ đây, mở rộng theo cách mỗi trình thu thập sản xuất mở rộng: buộc các bộ chọn vào móc bền vững nhất và kiểm tra lại chúng khi bố cục thay đổi, giữ lưu lượng ra cho phù hợp với đối tượng mà quảng cáo nhắm đến, coi các trường vắng mặt như có thể null, và giữ cho độ đồng thời lịch sự theo máy chủ. Đối với cùng một phân tách hiển thị trong JavaScript, hướng dẫn Cheerio và Puppeteer đi qua quyết định tĩnh so với động trong Node.js, và bề mặt SDK và CLI được tài liệu tại docs.scrapeless.com. So sánh các tùy chọn thời gian chạy trên trang giá khi bạn đã sẵn sàng để chạy nó với khối lượng lớn.


Sẵn sàng xây dựng đường ống dữ liệu trí tuệ nhân tạo của bạn?

Tham gia cộng đồng của chúng tôi để nhận một kế hoạch miễn phí và kết nối với các nhà phát triển đang xây dựng các đường ống trí tuệ quảng cáo: Discord · Telegram.

Đăng ký tại app.scrapeless.com để nhận thời gian chạy Scrapeless Scraping Browser miễn phí và điều chỉnh các mẫu bên trên cho các nhà quảng cáo, từ khóa và khu vực mà nghiên cứu Thư viện Quảng cáo của bạn cần.


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

Hỏi: Việc thu thập dữ liệu từ Thư viện Quảng cáo Facebook có hợp pháp không?
Thư viện Quảng cáo là một lưu trữ công khai minh bạch, và các quảng cáo trong đó có thể nhìn thấy công khai mà không cần đăng nhập, điều này thường đặt nó trên nền tảng vững chắc hơn so với dữ liệu bị giới hạn. Các quy tắc vẫn khác nhau theo từng khu vực và theo Điều khoản Dịch vụ của Meta, vì vậy hãy xem xét các điều khoản của nền tảng, thu thập dữ liệu nhà quảng cáo và quảng cáo thay vì thông tin cá nhân, và tư vấn luật sư cho mục đích thương mại.

Hỏi: Tôi có cần đăng nhập để xem Thư viện Quảng cáo không?
Không. Quảng cáo công khai trong Thư viện Quảng cáo hiển thị cho khách truy cập ẩn danh, và hướng dẫn này đọc cùng một bề mặt không cần đăng nhập. Đừng xác thực để truy cập các views mà trang công khai không hiển thị.

H: Tôi có cần một proxy không?
Có. Thư viện Quảng cáo thay đổi kết quả theo quốc gia của người xem và kiểm tra bot, vì vậy hãy sử dụng proxy dân cư và gán quốc gia với proxy_country để trang trả về quảng cáo mà một khách truy cập địa phương sẽ thấy. Phiên làm việc của Trình duyệt Scraping bao gồm điều đó.

H: Trang hiển thị một thách thức hoặc một lưới trống thay vì quảng cáo — làm thế nào để tôi có một bản hiển thị sạch?
Đó là kiểm tra chống bot đối với yêu cầu. Hiển thị thông qua Trình duyệt Scraping không có rắc rối với lối thoát dân cư của Hoa Kỳ được gán, và ấm phiên bằng cách tải facebook.com trước trong cùng một phiên trước khi điều hướng đến URL Thư viện Quảng cáo, để yêu cầu mang lại bề mặt trình duyệt giống như con người đã được thiết lập khi lưới tải.

H: Các bộ chọn của tôi ngừng hoạt động sau khi thay đổi bố cục — bây giờ tôi phải làm gì?
Tên lớp React của Thư viện Quảng cáo được mã hóa và xoay vòng, vì vậy đừng bao giờ gán cố định cho chúng. Tìm kiếm dựa trên văn bản Library ID: mà mỗi thẻ in ra và đọc các trường từ các mẫu văn bản và liên kết trang trần trụi. Khi Meta thay đổi bố cục thẻ, hãy kiểm tra lại các mẫu văn bản đó thay vì theo đuổi chuỗi lớp.

H: Tôi làm thế nào để cuộn qua nhiều quảng cáo hơn trong màn hình đầu tiên?
Lưới sử dụng cuộn vô hạn, không phải số trang. Cuộn trang, chờ các thẻ mới xuất hiện, đọc lại DOM, và lặp lại cho đến khi số lượng Library ID: ngừng tăng — trong một lần chạy, nó đã tăng từ 27 thẻ lên 104 sau sáu lần cuộn.

H: Tôi có thể chạy bao nhiêu tìm kiếm song song?
Giữ mức độ đồng thời ở mức hợp lý — khoảng ba phiên mỗi máy chủ là một giới hạn hợp lý — để bạn vẫn ở trong phạm vi yêu cầu lịch sự. Phiên của trình duyệt đám mây nặng hơn các yêu cầu HTTP, vì vậy hãy giới hạn chúng chặt chẽ hơn so với những gì bạn sẽ thực hiện với một lệnh fetch tĩnh.

H: Tôi có thể làm điều này mà không cần đại lý AI không?
Có. Luồng Python và SDK ở trên chạy từ đầu đến cuối một cách độc lập. Một đại lý là một lớp tiện lợi ở trên; vòng lặp hiển thị → khám phá → trích xuất → cuộn là mã đơn giản mà bạn có thể lên lịch trực tiếp.

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