Cách sử dụng AdsPower với Beautiful Soup để thu thập dữ liệu

By Anonymous☉ 4638 Views

Take a Quick Look

Tìm hiểu cách kết hợp trình duyệt chống phát hiện AdsPower với Beautiful Soup để thu thập dữ liệu web đáng tin cậy, chống chặn. Hướng dẫn từng bước, ví dụ mã và trường hợp sử dụng.

🔥 Limited-Time Offer! Save extra 10% off on your first monthly plan with code: Anitdetect10

Cách sử dụng AdsPower với Beautiful Soup để thu thập dữ liệu

Thu thập dữ liệu web bằng Python requests thông thường thường gặp rào cản: các trang web hiện đại phát hiện lưu lượng truy cập tự động thông qua dấu vân tay trình duyệt, thiếu thực thi JavaScript và danh tiếng IP. AdsPower và Beautiful Soup giải quyết hai nửa vấn đề này. AdsPower cung cấp cho bạn một môi trường trình duyệt thực, biệt lập với dấu vân tay duy nhất và proxy tùy chọn; Beautiful Soup cung cấp cho bạn phân tích HTML nhanh, dễ đọc sau khi trang được tải. Cùng nhau, chúng tạo ra một bộ thu thập dữ liệu trông giống con người với trang web mục tiêu và duy trì được trong mã của bạn.

Hướng dẫn này sẽ trình bày lý do tại sao sự kết hợp này hoạt động, cách kết nối AdsPower với tập lệnh Python của bạn và cách chuyển HTML đã hiển thị cho Beautiful Soup để trích xuất. Bạn cũng sẽ tìm thấy các ví dụ thực tế cho thương mại điện tử, mạng xã hội và quy trình làm việc đa tài khoản.

Tại sao kết hợp AdsPower và Beautiful Soup?

Beautiful Soup product interface

Beautiful Soup product interface.

AdsPower là trình duyệt chống phát hiện tạo ra các hồ sơ trình duyệt biệt lập, mỗi hồ sơ có dấu vân tay kỹ thuật số riêng bao gồm Canvas, WebGL, user agent, phông chữ và các tham số khác. Nó cũng hỗ trợ proxy để mỗi hồ sơ có thể xuất hiện từ một địa chỉ IP khác nhau. Điều này làm cho các nền tảng như Amazon, Facebook hoặc TikTok khó liên kết hoạt động thu thập dữ liệu của bạn với một danh tính duy nhất và chặn nó.

Beautiful Soup là một thư viện Python phân tích cú pháp tài liệu HTML và XML. Nó không hiển thị JavaScript hoặc quản lý phiên trình duyệt. Nó vượt trội trong việc điều hướng cây phân tích, tìm kiếm các phần tử và trích xuất văn bản hoặc thuộc tính sạch với mã tối thiểu.

Khoảng cách giữa hai thứ này được lấp đầy bởi một trình điều khiển tự động hóa trình duyệt. AdsPower cung cấp Local API cho phép bạn khởi chạy một hồ sơ và kết nối với nó thông qua Selenium hoặc Puppeteer. Selenium điều khiển trình duyệt Chromium thực bên trong hồ sơ AdsPower, chờ JavaScript hoàn tất và trả về mã nguồn trang đã hiển thị đầy đủ. Beautiful Soup sau đó phân tích cú pháp mã nguồn đó.

Đường ống này mang lại cho bạn ba lợi thế:

  • Cách ly dấu vân tay: Mỗi hồ sơ AdsPower trông giống như một thiết bị khác nhau, giảm khả năng các trang web tương quan các yêu cầu của bạn.
  • Hỗ trợ JavaScript: Selenium thực thi các tập lệnh trên trang, vì vậy bạn có thể thu thập nội dung chỉ xuất hiện sau khi hiển thị.
  • Phân tích cú pháp sạch: Beautiful Soup giữ cho logic trích xuất đơn giản và dễ đọc, không cần regex hoặc chuỗi XPath mong manh.

Vấn đề mà sự kết hợp này giải quyết là gì?

Beautiful Soup product interface

Beautiful Soup product interface.

Thu thập dữ liệu bằng requests và Beautiful Soup thường thất bại trên các trang web được bảo vệ. Máy chủ thấy user agent Python, thiếu tiêu đề trình duyệt và IP trung tâm dữ liệu. Nó phản hồi bằng CAPTCHA, mã 403 hoặc trang giả. AdsPower giải quyết các tín hiệu phía trình duyệt; proxy dân cư hoặc ISP được cấu hình bên trong hồ sơ giải quyết các tín hiệu phía mạng.

Beautiful Soup một mình cũng không thể tương tác với trang. Nếu một trang web tải giá sản phẩm thông qua lệnh gọi XHR sau HTML ban đầu, trình phân tích cú pháp tĩnh sẽ không thấy gì. Selenium bên trong hồ sơ AdsPower chờ các lệnh gọi đó hoàn tất. Bạn thậm chí có thể cuộn hoặc nhấp để kích hoạt tải chậm trước khi trích xuất HTML.

Đối với các nhóm quản lý nhiều tài khoản, hệ thống hồ sơ hàng loạt của AdsPower có nghĩa là mỗi công việc thu thập dữ liệu có thể chạy trong môi trường biệt lập của riêng nó. Một hồ sơ có thể thu thập danh mục của đối thủ cạnh tranh trong khi một hồ sơ khác theo dõi danh sách cửa hàng của chính bạn, không có cookie hoặc bộ nhớ dùng chung giữa chúng.

Điều kiện tiên quyết

Trước khi viết mã, hãy đảm bảo bạn có:

  • AdsPower được cài đặt trên Windows, Mac hoặc Linux. Bản dùng thử miễn phí đủ để kiểm tra quy trình làm việc.
  • Python 3.8 trở lên trên máy của bạn.
  • AdsPower Local API được bật. Trong ứng dụng máy tính để bàn AdsPower, đi tới Cài đặt > Cài đặt API và ghi chú cổng API (thường là 50325).
  • Một hồ sơ trình duyệt đã được tạo trong AdsPower. Ghi chú ID hồ sơ của nó, bạn có thể tìm thấy trong danh sách hồ sơ hoặc bằng cách nhấp vào hồ sơ và kiểm tra URL.
  • Các gói Python được cài đặt:
pip install requests selenium beautifulsoup4 lxml

Trình phân tích cú pháp lxml là tùy chọn nhưng được khuyến nghị cho tốc độ và khả năng chịu đựng HTML lộn xộn.

Bước 1: Kết nối với hồ sơ AdsPower qua Local API

Local API của AdsPower chạy trên máy của bạn và chấp nhận các yêu cầu HTTP. Hai điểm cuối bạn cần là:

  • GET /api/v1/user/list — trả về tất cả hồ sơ với ID của chúng.
  • GET /api/v1/browser/start?user_id=... — khởi chạy một hồ sơ và trả về chi tiết kết nối Selenium WebDriver.

Đây là một hàm tối thiểu khởi động một hồ sơ và trả về trình điều khiển Selenium:

import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

ADSPOWER_API = "http://127.0.0.1:50325"

def start_adspower_profile(profile_id):
    # Yêu cầu AdsPower mở hồ sơ
    resp = requests.get(
        f"{ADSPOWER_API}/api/v1/browser/start",
        params={"user_id": profile_id}
    )
    data = resp.json()
    if data["code"] != 0:
        raise RuntimeError(f"AdsPower error: {data['msg']}")

    # Kết nối Selenium với trình duyệt AdsPower vừa mở
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", data["data"]["ws"]["selenium"])
    driver = webdriver.Chrome(options=chrome_options)
    return driver

Nếu bạn không biết ID hồ sơ của mình, hãy liệt kê tất cả hồ sơ trước:

profiles = requests.get(f"{ADSPOWER_API}/api/v1/user/list").json()
for p in profiles["data"]["list"]:
    print(p["user_id"], p.get("name"))

Bước 2: Thêm proxy vào hồ sơ

Proxy không bắt buộc, nhưng nó cải thiện đáng kể tỷ lệ thành công trên các nền tảng nghiêm ngặt. AdsPower hỗ trợ proxy HTTP, HTTPS và SOCKS5. Bạn có thể cấu hình proxy trong cài đặt hồ sơ AdsPower trước khi khởi động, hoặc truyền tham số proxy qua Local API khi khởi chạy.

Đối với proxy dân cư hoặc ISP, nhà cung cấp cung cấp cho bạn máy chủ, cổng, tên người dùng và mật khẩu. Nhập chúng vào cài đặt proxy của hồ sơ. Nếu bạn đang so sánh các nhà cung cấp proxy, phân tích giá và gói IPRoyal có thể giúp bạn chọn gói dân cư phù hợp với khối lượng thu thập dữ liệu của bạn. Để có các tùy chọn rộng hơn, hãy xem các mạng proxy dân cư hàng đầu được kiểm tra và xếp hạng.

Một mẫu phổ biến là dành riêng một hồ sơ AdsPower cho mỗi trang web mục tiêu hoặc mỗi tài khoản, mỗi hồ sơ có proxy riêng. Điều này giữ cho danh tiếng IP riêng biệt và giảm lây nhiễm chéo nếu một hồ sơ bị gắn cờ.

Bước 3: Điều hướng và chụp HTML đã hiển thị

Khi trình điều khiển được kết nối, hãy sử dụng Selenium để tải URL mục tiêu và chờ nội dung xuất hiện. Sau đó chuyển driver.page_source cho Beautiful Soup.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

driver = start_adspower_profile("your_profile_id_here")
driver.get("https://www.example.com/products")

# Chờ một phần tử chính hiển thị
WebDriverWait(driver, 15).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".product-card"))
)

html = driver.page_source
soup = BeautifulSoup(html, "lxml")

Đối với các trang tải thêm nội dung khi cuộn, hãy thêm vòng lặp cuộn trước khi chụp mã nguồn:

for _ in range(3):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)

Bước 4: Trích xuất dữ liệu với Beautiful Soup

Beautiful Soup product interface

Beautiful Soup product interface.

Bây giờ bạn có thể sử dụng các phương pháp tìm kiếm và điều hướng của Beautiful Soup. Đây là một ví dụ trích xuất tên sản phẩm, giá và liên kết từ một trang thương mại điện tử chung:

products = []
for card in soup.select(".product-card"):
    name_el = card.select_one(".product-title")
    price_el = card.select_one(".product-price")
    link_el = card.select_one("a")

    products.append({
        "name": name_el.get_text(strip=True) if name_el else None,
        "price": price_el.get_text(strip=True) if price_el else None,
        "url": link_el["href"] if link_el else None,
    })

print(products)

Các phương thức select() và select_one() của Beautiful Soup chấp nhận các bộ chọn CSS, thường dễ duy trì hơn các biểu thức XPath dài. Đối với các trang có đánh dấu không nhất quán, find() với các đối số từ khóa cung cấp tìm kiếm khoan dung hơn.

Bước 5: Xuất và đóng sạch sẽ

Chuyển đổi dữ liệu đã trích xuất thành tệp CSV hoặc JSON, sau đó đóng trình điều khiển và yêu cầu AdsPower đóng hồ sơ:

import pandas as pd

pd.DataFrame(products).to_csv("products.csv", index=False)

driver.quit()
requests.get(
    f"{ADSPOWER_API}/api/v1/browser/stop",
    params={"user_id": "your_profile_id_here"}
)

Luôn dừng hồ sơ qua API thay vì chỉ gọi driver.quit(). Điều này giải phóng tài nguyên bên trong AdsPower và giữ trạng thái hồ sơ nhất quán cho lần chạy tiếp theo.

Ví dụ thực tế: Thu thập dữ liệu trang kết quả tìm kiếm

Đây là một tập lệnh hoàn chỉnh kết hợp tất cả các bước. Nó mở một hồ sơ AdsPower, tìm kiếm một thị trường, chờ kết quả và phân tích chúng bằng Beautiful Soup.

import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

ADSPOWER_API = "http://127.0.0.1:50325"
PROFILE_ID = "your_profile_id_here"
SEARCH_URL = "https://www.example.com/s?q=laptop"

def start_profile(profile_id):
    resp = requests.get(
        f"{ADSPOWER_API}/api/v1/browser/start",
        params={"user_id": profile_id}
    )
    data = resp.json()
    if data["code"] != 0:
        raise RuntimeError(data["msg"])
    opts = Options()
    opts.add_experimental_option("debuggerAddress", data["data"]["ws"]["selenium"])
    return webdriver.Chrome(options=opts)

def stop_profile(profile_id):
    requests.get(
        f"{ADSPOWER_API}/api/v1/browser/stop",
        params={"user_id": profile_id}
    )

driver = start_profile(PROFILE_ID)
try:
    driver.get(SEARCH_URL)
    WebDriverWait(driver, 15).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "[data-testid='result-item']"))
    )
    time.sleep(2)

    soup = BeautifulSoup(driver.page_source, "lxml")
    results = []
    for item in soup.select("[data-testid='result-item']"):
        title = item.select_one("h2")
        price = item.select_one(".price")
        results.append({
            "title": title.get_text(strip=True) if title else "",
            "price": price.get_text(strip=True) if price else "",
        })

    for r in results:
        print(r)
finally:
    driver.quit()
    stop_profile(PROFILE_ID)

Điều chỉnh các bộ chọn CSS để khớp với trang web bạn đang nhắm mục tiêu. Sử dụng công cụ dành cho nhà phát triển của trình duyệt để kiểm tra các phần tử và xác nhận bộ chọn nào xác định đáng tin cậy dữ liệu bạn cần.

AdsPower + Beautiful Soup so với các phương pháp khác

Beautiful Soup product interface

Beautiful Soup product interface.

Phương pháp Hỗ trợ JavaScript Cách ly dấu vân tay Độ phức tạp thiết lập Tốt nhất cho
requests + Beautiful Soup Không Không Thấp Các trang tĩnh đơn giản không có bảo vệ bot
Selenium + Beautiful Soup Có Không (dấu vân tay trình duyệt tiêu chuẩn) Trung bình Các trang động có bảo vệ nhẹ
AdsPower + Selenium + Beautiful Soup Có Có (dấu vân tay theo hồ sơ) Trung bình-cao Các trang được bảo vệ, thu thập đa tài khoản, công việc khối lượng lớn
AdsPower + Puppeteer Có Có Trung bình (Node.js) Các nhóm đã sử dụng công cụ JavaScript

Nếu nhóm của bạn thích JavaScript hơn Python, AdsPower cũng tích hợp với Puppeteer. Hướng dẫn thiết lập đầy đủ cho AdsPower với Puppeteer bao gồm phiên bản Node.js tương đương của quy trình làm việc này. Để có cái nhìn rộng hơn về cách AdsPower so sánh với các trình duyệt chống phát hiện khác về cách ly dấu vân tay và tự động hóa, hãy xem so sánh AdsPower vs MuLogin vs Maskfog.

Các lỗi thường gặp và cách tránh

Hồ sơ không khởi chạy: Đảm bảo ứng dụng máy tính để bàn AdsPower đang chạy và Local API được bật. API chỉ hoạt động khi ứng dụng đang mở.

Selenium không thể kết nối: Giá trị debuggerAddress từ phản hồi API phải được truyền chính xác. Nếu bạn thấy lỗi kết nối, hãy kiểm tra rằng cổng trong phản hồi khớp với cổng Selenium đang sử dụng.

Mã nguồn trang trống hoặc không đầy đủ: Trang có thể vẫn đang tải. Sử dụng chờ đợi rõ ràng (WebDriverWait) thay vì ngủ cố định. Chờ một phần tử cụ thể cho biết dữ liệu đã được hiển thị.

Gặp CAPTCHA mặc dù có AdsPower: Dấu vân tay hồ sơ giúp ích, nhưng danh tiếng IP cũng quan trọng. Sử dụng proxy dân cư hoặc ISP bên trong hồ sơ và tránh gửi quá nhiều yêu cầu trong một khoảng thời gian ngắn. Ngẫu nhiên hóa độ trễ giữa các lần tải trang.

Beautiful Soup trả về không có gì: Các bộ chọn có thể không khớp với DOM hiện tại. Lưu driver.page_source vào một tệp và kiểm tra thủ công để xác nhận các phần tử tồn tại và xác định các bộ chọn chính xác.

Đọc thêm liên quan

Nguồn và đọc thêm

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

Có hợp pháp để thu thập dữ liệu trang web bằng AdsPower và Beautiful Soup không?

Tính hợp pháp của việc thu thập dữ liệu web phụ thuộc vào điều khoản dịch vụ của trang web mục tiêu, loại dữ liệu bạn thu thập và khu vực pháp lý của bạn. Nhiều trang web cấm truy cập tự động trong điều khoản của họ. Luôn xem xét chính sách của trang web, tôn trọng robots.txt khi áp dụng và tránh thu thập dữ liệu cá nhân mà không có cơ sở pháp lý. AdsPower và Beautiful Soup là các công cụ trung lập; cách bạn sử dụng chúng quyết định sự tuân thủ.

Tôi có cần biết Python để sử dụng thiết lập này không?

Có, quy trình làm việc Beautiful Soup yêu cầu Python. Nếu bạn thích các tùy chọn không cần mã, tính năng RPA của AdsPower có thể tự động hóa một số hành động trình duyệt mà không cần viết tập lệnh, nhưng nó không cung cấp tính linh hoạt phân tích cú pháp như Beautiful Soup.

Tôi có thể chạy nhiều công việc thu thập dữ liệu cùng một lúc không?

Có. AdsPower hỗ trợ khởi chạy hồ sơ hàng loạt. Bạn có thể bắt đầu một số hồ sơ qua Local API, kết nối trình điều khiển Selenium với mỗi hồ sơ và chạy chúng song song bằng threading hoặc asyncio của Python. Cung cấp cho mỗi hồ sơ proxy riêng để tránh chồng chéo IP.

Beautiful Soup có hoạt động với các trang web nặng JavaScript không?

Beautiful Soup chỉ phân tích cú pháp HTML; nó không thực thi JavaScript. Đó là lý do tại sao quy trình làm việc sử dụng Selenium bên trong hồ sơ AdsPower để hiển thị trang trước. Khi HTML đã hiển thị được chụp, Beautiful Soup xử lý việc phân tích cú pháp.

Điều này khác gì so với việc sử dụng Puppeteer với AdsPower?

Puppeteer là một thư viện Node.js điều khiển Chrome và cũng có thể trích xuất dữ liệu trực tiếp từ DOM. Beautiful Soup là một thư viện phân tích cú pháp Python hoạt động trên chuỗi HTML. Ngăn xếp AdsPower + Selenium + Beautiful Soup phù hợp với các nhóm Python thích API phân tích cú pháp của Beautiful Soup hơn thao tác DOM JavaScript.

Kết luận

AdsPower và Beautiful Soup bổ sung cho nhau một cách rõ ràng. AdsPower cung cấp môi trường trình duyệt biệt lập, được bảo vệ bằng dấu vân tay giúp bạn vượt qua các biện pháp phòng thủ chống bot; Beautiful Soup cung cấp lớp phân tích cú pháp biến HTML đã hiển thị thành dữ liệu có cấu trúc. Selenium là cầu nối giữa chúng.

Bắt đầu với một hồ sơ và một trang web mục tiêu. Làm cho kết nối hoạt động, xác nhận các bộ chọn, sau đó mở rộng quy mô lên nhiều hồ sơ với proxy chuyên dụng. Sự kết hợp này đặc biệt hữu ích cho việc giám sát giá thương mại điện tử, nghiên cứu đối thủ cạnh tranh, làm giàu khách hàng tiềm năng và bất kỳ quy trình làm việc nào mà các trang web chặn mạnh các trình thu thập dữ liệu thông thường.

Đối với các nhóm đang đánh giá các trình duyệt chống phát hiện trước khi cam kết, so sánh AdsPower vs Octo Browser vs BitBrowser phân tích các đánh đổi về dấu vân tay, tự động hóa và giá cả.

AI INSIGHTS

Need a Quick Summary? Ask AI