Node.js SDK
概要
公式のScrapelessNode.js SDKは、ブラウザ自動化、スクレイピング、クロール、プロキシ、検索結果、およびAIチャット抽出にアクセスできます。このガイドは SDKリポジトリのREADMEに従っており、実行可能な例と構成の詳細を提供しています。
必要条件
npm、pnpm、またはYarnでNode.jsを使用してください。 パッケージマニフェスト は最小のNode.jsバージョンを宣言していません。リポジトリの公開ワークフローではNode.js20を使用しています。JavaScriptおよびTypeScriptがサポートされており、ESモジュールとCommonJSの両方のエクスポートがあります。
以下の例はESモジュールを使用しています。それらを .mjs ファイルとして保存するか、プロジェクトの "type": "module" で package.jsonを設定してください。
インストール
npm install @scrapeless-ai/sdkまた、 pnpm add @scrapeless-ai/sdk または yarn add @scrapeless-ai/sdkを使用することもできます。
認証 / APIキー
Scrapelessダッシュボード にログインして、APIキーを作成してください。例を実行する前にエクスポートしてください。
export SCRAPELESS_API_KEY="YOUR_API_KEY"ソース管理にコミットする代わりに、APIキーは環境変数またはシークレットマネージャーに保存してください。
new Scrapeless() SCRAPELESS_API_KEYを読み込みます。クライアントの構築時にオプションとして apiKey を渡すこともできます。
クイックスタート
このコードを quickstart.mjs として保存します。実行コマンドは node quickstart.mjs で、あらかじめAPIキーを設定してください。
import { Scrapeless } from '@scrapeless-ai/sdk';
const client = new Scrapeless();
const result = await client.universal.scrape({
actor: 'unlocker.webunlocker',
input: { url: 'https://example.com', method: 'GET', redirect: false }
});
console.log(result);製品対応マトリクス
| 製品 | SDKサービス | 対応範囲 |
|---|---|---|
| Scraping Browser | client.browser | リモートブラウザセッションの作成と管理。 |
| ブラウザプロファイル | client.profiles | セッション間でブラウザのデータを保持。 |
| Scraping API | client.scraping | ウェブサイトアクターを使用して構造化データを抽出。 |
| Web Unlocker | client.universal | 保護されたウェブサイトからコンテンツを取得。 |
| クローリング | client.scrapingCrawl | ページをスクレイピングまたはウェブサイトをクロール。 |
| Google Search API | client.deepserp | 検索エンジンの結果を抽出。 |
| Proxies | client.proxies | プロキシ接続URLを生成。 |
| AI Scraper | client.aiScraper | AIチャットタスクを作成し、そのステータスと結果を取得。 |
使用例
例が独自のクライアントを初期化しない限り、クイックスタートの const client = new Scrapeless() を再利用してください。
ブラウザ
この例では、Puppeteerをインストールしてください: npm install puppeteer-core。PlaywrightおよびSDKのブラウザラッパーについては、 ブラウザ統合の例を参照してください。
fingerprintの偽装、CAPTCHAの解決など、構成可能な不正検知回避機能と拡張可能な自動化ワークフローを備えた、PlaywrightおよびPuppeteerフレームワークをサポートする高度なブラウザセッション管理:
import { Scrapeless } from '@scrapeless-ai/sdk';
import puppeteer from 'puppeteer-core';
const client = new Scrapeless();
// Create a browser session
const { browserWSEndpoint } = await client.browser.create({
sessionName: 'my-session',
sessionTTL: 180,
proxyCountry: 'US'
});
// Connect with Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint: browserWSEndpoint
});
try {
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
} finally {
await browser.close();
}ブラウザプロファイル
永続的なセッション用にブラウザプロファイルを管理します。
const createResponse = await client.profiles.create('My Profile');
console.log('Profile created:', createResponse);
const profiles = await client.profiles.list({ page: 1, pageSize: 10 });
console.log('Profiles:', profiles.docs);
const profile = await client.profiles.get(createResponse.profileId);
console.log('Profile details:', profile);
// Delete the profile when it is no longer needed.
await client.profiles.delete(createResponse.profileId);Scraping API
ウェブサイト(例:eコマース、旅行プラットフォーム)向けの直接データ抽出API。事前構築されたコネクタで、構造化された商品情報、価格、レビューを取得します:
const result = await client.scraping.scrape({
actor: 'scraper.google.search',
input: {
'q': 'coffee',
'hl': 'en',
'gl': 'us'
}
});
console.log(result.data);Web Unlocker
Web Unlocker( client.universalとして公開されています)を使用して、ウェブサイトからデータを抽出します。
const result = await client.universal.scrape({
actor: 'unlocker.webunlocker',
input: { url: 'https://example.com', method: 'GET', redirect: false }
});
console.log(result);クローリング
単一ページからデータを抽出するか、ドメイン全体を走査して、Markdown、JSON、HTML、スクリーンショット、リンクなどの形式でエクスポートします。
const result = await client.scrapingCrawl.scrapeUrl('https://example.com');
console.log(result);プロキシ
ゲートウェイとセッション設定を使用してプロキシのURLを生成します。
const proxyUrl = client.proxies.proxy({
type: 'residential',
country: 'US',
sessionDuration: 30,
sessionId: client.proxies.generateSessionId(),
gateway: 'your-proxy-gateway:port'
});
console.log(proxyUrl);AI Scraper
タスクを作成します: client.aiScraper.createTask(request)
必須の actor と、actor固有の inputを渡します。任意の webhook オブジェクトには、コールバック用の urlを指定できます。Promiseが解決すると、完全なAPIレスポンスが返されます。レスポンスには task_id と statusが含まれ、利用可能な場合は task_result も含まれます。
AIチャットのコンテンツを一括抽出して、ブランドの言及を監視したり、回答を比較したり、最新モデルからの競合情報分析を行ったりできます。1つの統合でURL、プロンプト、Markdown形式の回答、引用文献などを取得できます。
サポートされているactorには scraper.chatgpt、 scraper.perplexity、 scraper.copilot、 scraper.gemini、 scraper.aimode、 scraper.overview、 scraper.grok、および scraper.alexaが含まれます。 input のJSONは使用するactorによって異なります。詳細なパラメータについては、actorの AI Scraperドキュメント を参照してください。オプションの webhook JSONにはコールバック用の urlが含まれます。
import { Scrapeless } from '@scrapeless-ai/sdk';
const client = new Scrapeless(); // Uses SCRAPELESS_API_KEY
const task = await client.aiScraper.createTask({
actor: 'scraper.chatgpt',
input: {
prompt: 'Most reliable proxy service for data extraction',
country: 'US',
web_search: true
},
// Optional: webhook: { url: 'https://your-webhook.example.com' }
});
console.log('Created task:', task);タスクのステータスと結果を取得します: client.aiScraper.getTaskResult(taskId)
作成時に得られた task_id を渡します。同じスクリプト内で続行するか、IDを保存して後からリクエストで結果を取得します。
const result = await client.aiScraper.getTaskResult(task.task_id);
switch (result.status) {
case 'success':
console.log('Task result:', result.task_result);
break;
case 'failed':
console.error('Task failed:', result.message);
break;
case 'running':
console.log('Task is running. Retrieve the result again later.');
break;
}どちらのメソッドも、元のAPIのJSONを変更せずに返します。作成時には task_id、 status、および利用可能な場合は task_resultが返されます。結果取得時には、利用可能な場合は status、 task_result 、失敗時には message が返されます。ステータスは success、 failed、または runningのいずれかです。SDKは自動的にポーリングしません。
| ステータス | 意味 | 次のステップ |
|---|---|---|
running | タスクはまだ処理中です。 | 後で再び getTaskResult を呼び出すか、webhookを使用してください。 |
success | タスクが完了しました。 | 結果は task_resultから読み取ります。その構造はactorによって異なります。 |
failed | タスクは完了できませんでした。 | 失敗の理由は message を参照してください。 |
作成時に既に結果が含まれている場合があります。さらにリクエストをスケジュールする前に、そのステータスを確認してください。ポーリングを実装する場合は、遅延と全体的なタイムアウトを使用します。
Google Search API
const result = await client.deepserp.scrape({
actor: 'scraper.google.search',
input: { q: 'nike site:www.nike.com' }
});
console.log(result);より完全な統合の例については、リポジトリの examples ディレクトリを参照してください。
エラー処理
ScrapelessError をキャッチしてAPIリクエストの失敗を処理します。タスクはエラーをスローせずに終了する可能性があるため、AI Scraperレスポンスの status は別途確認してください:タスクは failed を返すことができますが、その際HTTPリクエストがエラーをスローしない場合があります。
import { Scrapeless, ScrapelessError } from '@scrapeless-ai/sdk';
try {
const client = new Scrapeless();
const result = await client.universal.scrape({
actor: 'unlocker.webunlocker',
input: { url: 'https://example.com', method: 'GET' }
});
console.log(result);
} catch (error) {
if (error instanceof ScrapelessError) {
console.error('Scrapeless error:', error.message);
console.error('Status code:', error.statusCode);
} else {
throw error;
}
}設定 / 環境変数
APIキーは必須です。エンドポイントの上書きは任意です。表にはデフォルト値が示されています。
import { Scrapeless } from '@scrapeless-ai/sdk';
const client = new Scrapeless({
apiKey: process.env.SCRAPELESS_API_KEY,
timeout: 30000, // Request timeout in milliseconds
baseApiUrl: 'https://api.scrapeless.com',
browserApiUrl: 'https://browser.scrapeless.com',
scrapingCrawlApiUrl: 'https://api.scrapeless.com'
});明示的な設定は環境変数よりも優先されます。デフォルトのリクエストタイムアウトは30,000ミリ秒です。
| 環境変数 | 目的 / デフォルト値 |
|---|---|
SCRAPELESS_API_KEY | ダッシュボードからの必須のAPIキー。 |
SCRAPELESS_BASE_API_URL | https://api.scrapeless.com |
SCRAPELESS_BROWSER_API_URL | https://browser.scrapeless.com |
SCRAPELESS_CRAWL_API_URL | https://api.scrapeless.com |
サポート
SDKは MITライセンスの下でリリースされています。