/scrape エンドポイントは、Web ページ上の特定の要素から構造化データを抽出します。要素の寸法や inner HTML などの詳細を返します。
このエンドポイントは、次の 2 通りの方法で使えます。
- REST API:
Browser Rendering - Edit権限を持つ カスタム API トークンを作成 します。 - Workers Bindings: Workers Bindings を使い、Cloudflare Worker から直接エンドポイントを呼び出します。API トークンは不要です。
詳細は Quick Actions: 始める前に を参照してください。
https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/scrapeelements と、url または html のどちらか一方を指定します。
url(string)html(string)elements(array of objects) — 各オブジェクトにselector(string) が必要です
- CSS セレクターで見出し、リンク、価格、その他の繰り返しコンテンツを抽出する
- メタデータ(タイトル、説明、canonical リンクなど)を収集する
https://example.com を開き、DOM 内のすべての h1 と a 要素からメタデータを抽出します。
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/scrape' \
-H 'Authorization: Bearer <apiToken>' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com/",
"elements": [{
"selector": "h1"
},
{
"selector": "a"
}]
}'{
"success": true,
"result": [
{
"results": [
{
"attributes": [],
"height": 39,
"html": "Example Domain",
"left": 100,
"text": "Example Domain",
"top": 133.4375,
"width": 600
}
],
"selector": "h1"
},
{
"results": [
{
"attributes": [
{ "name": "href", "value": "https://www.iana.org/domains/example" }
],
"height": 20,
"html": "More information...",
"left": 100,
"text": "More information...",
"top": 249.875,
"width": 142
}
],
"selector": "a"
}
]
}import Cloudflare from "cloudflare";
const client = new Cloudflare({
apiToken: process.env["CLOUDFLARE_API_TOKEN"],
});
const scrapes = await client.browserRendering.scrape.create({
account_id: process.env["CLOUDFLARE_ACCOUNT_ID"],
url: "https://example.com/",
elements: [{ selector: "h1" }, { selector: "a" }],
});
console.log(scrapes);interface Env {
BROWSER: BrowserRun;
}
export default {
async fetch(request, env): Promise<Response> {
return await env.BROWSER.quickAction("scrape", {
url: "https://example.com/",
elements: [{ selector: "h1" }, { selector: "a" }],
});
},
} satisfies ExportedHandler<Env>;ほかにも、authenticate で HTTP 認証情報を設定する、cookies を設定する、gotoOptions でページ読み込みの挙動を制御するなどのオプションがあります。利用できるすべてのパラメーターは、エンドポイントの リファレンス を確認してください。
results(array of objects) - 各セレクターから抽出したデータを含みます。selector(string) - 使った CSS セレクターです。results(array of objects) - セレクターに一致した抽出要素の一覧です。text(string) - 要素の inner text です。html(string) - 要素の inner HTML です。attributes(array of objects) - リンクのhrefなど、抽出した属性の一覧です。height、width、top、left(number) - 要素の位置と寸法です。
JavaScript が多いページや Single Page Application(SPA)では、デフォルトのページ読み込み動作だと、空または不完全な結果が返ることがあります。ブラウザーが、JavaScript によるコンテンツ描画が終わる前にページ読み込み完了とみなすためです。
いちばん簡単な対処は、gotoOptions.waitUntil パラメータを networkidle0 または networkidle2 に設定することです。
{
"url": "https://example.com",
"gotoOptions": {
"waitUntil": "networkidle0"
}
}より速い応答が必要な場合、上級者はネットワーク活動がすべて止まるのを待つのではなく、waitForSelector で特定の要素を待てます。必要なコンテンツが読み込まれたことを示す CSS セレクターを把握している必要があります。詳細は Quick Actions のタイムアウト を参照してください。
JSON 本文のトップレベルパラメーターとして userAgent を渡すと、ページ単位で User-Agent を変更できます。対象サイトが User-Agent に応じて別のコンテンツを返す場合に便利です。
質問がある場合やエラーが発生した場合は、Browser Run の FAQ とトラブルシューティングガイド を参照してください。