ウェブアンロッカーAPI:任意のページをHTML、Markdown、またはPNGにレンダリング
Advanced Data Extraction Specialist
TL;DR:
- Web Unlockerは任意のURLをクリーンなデータに変換します。 URLを
unlocker.webunlockerに送信すると、HTML、プレーンテキスト、Markdown、スクリーンショット、または抽出コンテンツとしてページが返されます。ブラウザを管理する必要はありません。 - JavaScriptレンダリングはフラグであり、別の製品ではありません。
jsRender.enabled: trueを設定すると、レスポンスが構築される前に実際のブラウザでページがレンダリングされるため、クライアントサイドのコンテンツがすでに表示されています。 - レスポンスの形状を選べます。
response.typeはhtml、plaintext、markdown、png、jpeg、network、またはcontentのいずれかです。LLM用にMarkdownをリクエストしたり、スクリーンショット用にPNGを取得したり、構造化された抽出用にcontentをリクエストできます。 - プロキシ国はフィールドです。 リクエストをその地域の住宅用出口を経由させるために
proxy.countryを設定します。ミスマッチした地域は、ページが異なるようにレンダリングされる一般的な理由の一つです。 - 2つのタイムアウトがすべての呼び出しを制御します。 30秒のページロード上限と180秒のグローバル実行上限があります。ページロードの制限が優先されます。
- 開始は無料です。 新しいScrapelessアカウントには無料のUniversal Scraping APIの使用が含まれています。app.scrapeless.comでサインアップしてください。
導入:1つのエンドポイント、任意のページ、あなたが求めた形状
ほとんどのスクレイピングコードは、データの周りにすべての労力を費やします:ブラウザを立ち上げ、JavaScriptを待ち、ブロックを処理し、そしてHTMLを使えるものに解析します。Scrapeless Universal Scraping APIはこれを単一のHTTPリクエストに統合します。URLをWeb UnlockerアクターにPOSTすると、レスポンスはページであり、すでにレンダリングされ、あなたが求めた形式になっています。
このガイドでは、unlocker.webunlockerアクターのエンドツーエンドを説明します:リクエストの形状、最初のcurl、レスポンスエンベロープ、Python統合、JavaScriptレンダリングが返せる7つのレスポンスタイプ、リクエストをクリーンに保つ方法についてです。以下のすべてのリクエストとレスポンスは、ライブAPIに対してキャプチャされました。
何ができるのか
- ページを生のHTMLとして取得する — クリーンな出口を通じてのプレーンなGETで、自分でマークアップを解析する時に利用できます。
- JavaScriptが多く使われているページをレンダリングする —
jsRender.enabledを設定し、クライアントが実行した後にのみ存在するコンテンツを読み取ります。 - LLM用のMarkdownを取得する —
type: markdownをリクエストし、その結果をRAGパイプラインやプロンプトに直接フィードします。 - スクリーンショットをキャプチャする —
type: pngまたはjpegをリクエストし、レンダリングされたビューポートを画像として取得します。 - 構造化されたコンテンツを抽出する — ヘッディング、リンク、テーブル、メール、画像、メタデータをページから引き出すために
type: contentをリクエストします。 - ネットワークリスポンスを監視する — ページが作成するXHR(XMLHttpRequest)/fetchレスポンスを、URL、ステータス、およびメソッドでフィルタリングしてキャプチャするために
type: networkをリクエストします。 - 最初にページを操作する — レスポンスが作成される前に
instructionsを実行します(セレクタを待つ、クリック、入力、キーを押すなど)。
なぜScrapeless Universal Scraping APIが必要なのか
Universal Scraping APIは管理されたWebアンロックのインターフェースです。URLを送信すると、レンダリング、出口、そして検出防止を処理し、クリーンなデータを返します。このワークフローに特有の利点は以下の通りです:
- クラウド側のJavaScriptレンダリング — 実際のブラウザがページを実行するため、シングルページアプリケーションやレイジーロードされたコンテンツはレスポンスが構築される前に解決されます。
- 195以上の国に住宅用プロキシ —
proxy.countryを通じてルーティングし、出口IPの評判をクリーンに保ち、地理的にルーティングされたページが正しく表示されます。 - 自動チャレンジ処理 — reCAPTCHA v2、Cloudflare Turnstile、Cloudflareの中間ページはアクター内で処理されます。
- 7つのレスポンス形式 — HTML、プレーンテキスト、Markdown、PNG、JPEG、ネットワークキャプチャ、そして同じエンドポイントからの構造化コンテンツ。
- 1つのHTTP契約 — ブラウザのライフサイクルやドライバーバージョンは不要です。レスポンスはデータそのものです。
無料プランであなたのAPIキーを取得するには、app.scrapeless.comを訪れてください。
前提条件
- ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップしてください。
- 最初のリクエストには
curl、統合にはPython 3.10以上(またはNode.js 18以上)が必要です。 - HTTPとJSONに関する基本的な理解が必要です。
Web Unlockerの動作
すべての呼び出しは、{actor, input, proxy}のJSONボディを持つ1つのエンドポイントへのPOSTです。
リクエストパラメータ
| フィールド | 場所 | 意味 |
|---|---|---|
actor |
トップレベル | unlocker.webunlocker |
input.url |
入力 | 取得するページ |
input.method |
入力 | HTTPメソッド(デフォルトはGET) |
input.redirect |
入力 | リダイレクトを follow(true/false) |
input.jsRender |
入力 | { enabled, response, instructions, block } — レンダリングオプション |
proxy.country |
プロキシ | ISO国コードまたはANY |
認証にはx-api-tokenヘッダーを使用します。レスポンスエンベロープは常に{ "code": 200, "data": ... }です。
curlを使用した簡単なキャプチャ
住宅用出口を通じてページをHTMLとして取得します:
bash
curl -X POST https://api.scrapeless.com/api/v2/unlocker/request \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
```json
{
"actor": "unlocker.webunlocker",
"input": { "url": "https://www.example.com", "method": "GET", "redirect": false },
"proxy": { "country": "ANY" }
}
レスポンスエンベロープ
json
{
"code": 200,
"data": "<!doctype html><html>…</html>"
}
codeが200であればリクエストが成功したことを意味し、dataにはペイロードが含まれます — ここではHTMLテキスト、他のレスポンスタイプの場合はMarkdownやbase64画像などです。
PythonでのAPI統合
Pythonから同じ呼び出しを行うには、環境からキーを読み取ります:
python
import os
import requests
API_KEY = os.environ["SCRAPELESS_API_KEY"]
resp = requests.post(
"https://api.scrapeless.com/api/v2/unlocker/request",
headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
json={
"actor": "unlocker.webunlocker",
"input": {"url": "https://www.example.com", "method": "GET", "redirect": False},
"proxy": {"country": "ANY"},
},
timeout=70,
)
data = resp.json()
if data.get("code") == 200:
html = data["data"]
print(len(html), "バイトのHTML")
無料プランでAPIキーを取得: app.scrapeless.com
JavaScriptのレンダリング:7つのレスポンスタイプ
ページを実際のブラウザでレンダリングするには、まずjsRenderを追加します。response.typeが何が返されるかを決めます。ページのMarkdownを要求します — LLMに最適です:
python
payload = {
"actor": "unlocker.webunlocker",
"proxy": {"country": "ANY"},
"input": {
"url": "https://www.example.com",
"jsRender": {
"enabled": True,
"response": {"type": "markdown"},
},
},
}
resp = requests.post(
"https://api.scrapeless.com/api/v2/unlocker/request",
json=payload,
headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
timeout=70,
)
print(resp.json()["data"])
# "# Example Domain\n\nこのドメインはドキュメントの例で使用されます..."
typeフィールドは形式を選択します:
response.type |
返されるもの |
|---|---|
html |
JavaScript実行後のレンダリングされたHTML |
plaintext |
可視テキスト、マークアップが除去されています |
markdown |
ページのMarkdown (LLM対応) |
png / jpeg |
base64文字列としてのスクリーンショット |
network |
urls、status、methodsでフィルタリングされたキャプチャされたXHR/fetchレスポンス |
content |
構造化された抽出 — 見出し、リンク、テーブル、画像、メール、メタデータ |
スクリーンショットの場合、pngをリクエストし、base64のdataをバイトにデコードします:
python
import base64
payload["input"]["jsRender"]["response"] = {"type": "png"}
resp = requests.post(
"https://api.scrapeless.com/api/v2/unlocker/request",
json=payload,
headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
timeout=70,
)
with open("page.png", "wb") as f:
f.write(base64.b64decode(resp.json()["data"]))
キャプチャ前のページ操作
コンテンツがインタラクション後にのみ表示される場合、instructionsを渡します — 各命令はレスポンスを構築する前にレンダラーが順番に実行する動詞です:
json
{
"actor": "unlocker.webunlocker",
"input": {
"url": "https://example.com",
"jsRender": {
"enabled": true,
"instructions": [
{ "waitFor": [".dynamic-content", 30000] },
{ "click": ["#load-more", 1000] },
{ "fill": ["#search-input", "search term"] },
{ "keyboard": ["press", "Enter"] },
{ "evaluate": "window.scrollTo(0, document.body.scrollHeight)" }
]
}
}
}
また、jsRender.block.resourcesで必要ないリソースタイプをブロックすることで帯域幅を削減できます(例:Image、Font、Media、Stylesheet)。これにより、リソースカテゴリに従ってフェッチ層がスキップします。
一般的な問題を回避する方法
-
ページに存在しないフィールドはnullであり、エラーではありません。 抽出されたフィールドはすべてオプションと見なし、その不在に備えてガードを使用します。存在すると仮定しないでください。
-
2つのタイムアウトに注意。 ページ読み込みの上限は30秒で、グローバル実行の上限は180秒であり、すべての呼び出しが制限されています。また、ページ読み込みの制限が優先されます —
waitForの値をその範囲内に保ってください。ターゲット自体がエラーになると、見えるステータスコードはHTTPセマンティクス仕様に定義されています。 -
コンテンツに国を固定。 ページが地理的にルーティングされる場合、
proxy.countryを望むバージョンを提供する地域に設定します;ANYは必要ない場合は問題ありません。 -
応答タイプを慎重に選択してください。 データが必要なときは
markdownまたはcontentをリクエストしてください。解析が必要なhtmlではありません — 抽出はどちらにしてもサーバー側で行われ、アンロッカーが処理する自動トラフィックパターンは OWASP自動脅威プロジェクト にカタログされています。
結論:必要な形のページ
Webアンロッカーは、スクレイプを一つの決定に減らします: どのURL、どの応答タイプです。レンダリング、出口、そして検知防止はアクター内で処理されるので、JavaScriptが多く使用されているページは単一のリクエストでクリーンなMarkdownまたはスクリーンショットになります。完全なインタラクティブセッションが必要なときはScraping Browserと組み合わせて使用し、住宅用およびデータセンターの出口についても学んでください。プロキシの評判がほとんどのレンダリング結果を決定します。Universal Scraping APIのドキュメントはすべてのフィールドをカバーしています。
AI駆動のデータパイプラインを構築する準備はできましたか?
私たちのコミュニティに参加して、無料プランを取得し、抽出パイプラインを構築している開発者とつながってください: Discord · Telegram。
app.scrapeless.com で無料のUniversal Scraping APIを登録し、スケールのための料金を確認してください。
FAQ
Q: WebアンロッカーとScraping Browserの違いは何ですか?
Webアンロッカーは単一のリクエスト/応答エンドポイントです — URLを送信し、一度のコールでページを取得します。Scraping Browserは、PuppeteerやPlaywrightで駆動する完全なインタラクティブクラウドブラウザです。抽出と解析にはアンロッカーを使用し、マルチステップセッションにはブラウザを使用します。
Q: JavaScriptレンダリングを有効にする必要がありますか?
必要なコンテンツがクライアントレンダリングされている場合のみです。単純な GET でサーバーのHTMLが返されますが、jsRender.enabled: true を追加するとページが最初に実際のブラウザで実行されます。これはシングルページアプリやレイジーロードされたコンテンツに必要です。
Q: LLMパイプラインにはどの応答タイプを使用すればよいですか?
markdown — これは、マークアップが取り除かれたクリーンなMarkdownとしてページを返し、ほとんどのRAGおよびプロンプトパイプラインが望むものです。プローズではなく、見出し、リンク、テーブルなどの個別のフィールドが必要な場合は content を使用してください。
Q: スクリーンショットを取得するにはどうすればよいですか?
response.type を png または jpeg に設定します。data フィールドはbase64文字列として返されるので、それをデコードして画像バイトに変換します。
Q: プロキシは必要ですか?
出口はビルトインです。特定の地域の住宅用IPを経由させるためには proxy.country を設定するか、サービスに選択させるために ANY を使用します。ページがジオルーティングされたり、データセンターのIPに挑戦する場合、国を特定することが重要です。
Q: タイムアウトはどのようになっていますか?
固定の30秒のページロード制限と180秒のグローバル実行制限があります。ページロードの制限が優先され、グローバル制限の前にコールが終了することがあるので、waitFor 値はその予算内に収めておく必要があります。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



