Feed vô tận, nút "tải thêm" và các trang dựng bằng JavaScript chỉ trả cho một request thông thường một khung trống. Gologin Cloud Browser tải chúng giống như trình duyệt của một người dùng, nên script Playwright hoặc Puppeteer của bạn thu thập được mọi thứ xuất hiện.
Bắt đầu miễn phí, không cần thẻ. Đã bao gồm IP dân cư.
Một request thông thường đọc HTML mà máy chủ gửi về. Các trang động gửi dữ liệu sau, qua JavaScript, thao tác cuộn và nhấp. Đây là những gì mỗi cách lấy được.
| Bạn lấy được gì | HTTP request thông thường | Headless Chrome | |
|---|---|---|---|
| Nội dung dựng bằng JavaScript | Có | Không | Có |
| Cuộn vô tận và "tải thêm" | Có | Không | Có |
| Nội dung tải sau vài giây | Có | Không | Có |
| Đã bao gồm IP dân cư | Có | Không | Không |
| Cùng phiên ở lần chạy tiếp theo | Có | Không | Không |
| Máy chủ phải tự vận hành | Không có | Không có | Của bạn |
Chỉ cần trang đã render, không cần phiên? Web Unlocker trả về trang đó trong một request và chỉ tính phí khi thành công.
Kết nối script của bạn với Gologin Cloud Browser bằng một dòng, chờ nội dung xuất hiện, rồi cuộn cho đến khi không còn gì mới. Đoạn code bên dưới đã thu thập đủ 100 câu trích dẫn từ một trang thử nghiệm cuộn vô tận.
Đăng ký bằng Google và sao chép key từ bảng điều khiển. Miễn phí, không cần thẻ.
Một cú nhấp trong bảng điều khiển, hoặc một lệnh gọi API. Profile giữ thiết bị, IP và phiên đăng nhập.
Cài thư viện và chạy script bên dưới với token và profile id của bạn. Script cuộn cho đến khi không còn câu trích dẫn mới nào được tải, rồi thu thập từng câu kèm tác giả. Xem thêm trong hướng dẫn bắt đầu.
npm install playwright-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium } from "playwright-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await chromium.connectOverCDP(endpoint);
const page = await browser.contexts()[0].newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.locator(".quote").count();
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
before,
{ timeout: 3000 }
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.close();npm install puppeteer-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import puppeteer from "puppeteer-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.$$eval(".quote", (els) => els.length);
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
{ timeout: 3000 },
before
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.disconnect();pip install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id python scrape.pywss://cloudbrowser.gologin.com/connect?token=…&profile=…import os
from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
token = os.environ["GOLOGIN_TOKEN"]
profile_id = os.environ["GOLOGIN_PROFILE_ID"]
endpoint = f"wss://cloudbrowser.gologin.com/connect?token={token}&profile={profile_id}"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.contexts[0].new_page()
page.goto("http://quotes.toscrape.com/scroll")
page.wait_for_selector(".quote")
for _ in range(30):
before = page.locator(".quote").count()
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
try:
page.wait_for_function(
"n => document.querySelectorAll('.quote').length > n",
arg=before,
timeout=3000,
)
except PlaywrightTimeoutError:
break
quotes = page.eval_on_selector_all(
".quote",
"els => els.map(el => ({text: el.querySelector('.text')?.textContent, author: el.querySelector('.author')?.textContent}))",
)
print(len(quotes), quotes[0])
page.close()
browser.close()Mọi gói đều chạy cùng một trình duyệt, đã bao gồm IP dân cư. Các gói khác nhau ở số giờ trình duyệt và số phiên song song.
$0
Không cần thẻ
$4.50/ tháng
Cho lập trình viên cá nhân
$8/ tháng
Cho nhóm đang phát triển
$14/ tháng
Cho vận hành quan trọng
Cần chạy nhiều hơn cùng lúc? Thêm phiên song song cho bất kỳ gói nào với giá $2 mỗi tháng cho mỗi phiên, bao nhiêu tùy bạn cần. Lưu lượng proxy vượt hạn mức là $1/GB.
Từ 4 phiên song song, với quản lý tài khoản riêng, SLA cao cấp và onboarding theo nhu cầu.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Là thu thập dữ liệu từ những trang dựng nội dung ngay trong trình duyệt: feed, kết quả tìm kiếm, giá hoặc đánh giá xuất hiện sau khi trang tải, khi cuộn hoặc sau một cú nhấp. Bạn cần một trình duyệt thật để chạy trang trước khi đọc được nó.
Máy chủ gửi một khung trang và dữ liệu đến sau qua JavaScript. Một request thông thường dừng lại ở khung đó, nên dữ liệu không bao giờ có ở đó để phân tích. Hãy tải trang trong trình duyệt và chờ phần tử bạn cần, như các script ở trên.
Dùng Web Unlocker khi bạn cần trang đã render từ một URL: một request, chỉ tính phí khi thành công. Dùng Cloud Browser khi công việc cần phiên: cuộn feed, nhấp qua các trang, giữ đăng nhập giữa các lần chạy.
Cuộn xuống cuối trang, chờ các mục mới xuất hiện, và lặp lại cho đến khi số lượng ngừng tăng. Các script ở trên làm đúng như vậy và tự dừng khi không còn gì mới được tải.
Có. Đăng nhập một lần trong một profile và phiên ở lại với profile đó: kết nối lại sau đó và bạn vẫn đang đăng nhập. Cần một phiên đăng nhập dùng cho nhiều trình duyệt? Xem Trình duyệt thu thập dữ liệu. Chỉ thu thập dữ liệu mà bạn được phép truy cập.
Có. Python Playwright kết nối tới cùng địa chỉ bằng connect_over_cdp, và tab Python ở trên có script đầy đủ. Cài bằng pip install playwright; không cần tải trình duyệt về máy, vì trình duyệt chạy trên cloud.
Kết nối script Playwright hoặc Puppeteer của bạn bằng một dòng, và thu thập những gì một trình duyệt thật nhìn thấy.
Bắt đầu miễn phí, không cần thẻ. Đã bao gồm IP dân cư.