テクノロジー 開発 非公開: スクレイピングブラウザでデータ抽出も簡単

スクレイピングブラウザでデータ抽出も簡単

データ抽出は、Web ページから特定のデータを収集するプロセスです。ユーザーは、テキスト、画像、ビデオ、レビュー、製品などを抽出できます。データを抽出して、市場調査、センチメント分析、競合分析、およびデータの集計を実行できます。

扱うデータが少量の場合は、Web ページから特定の情報をスプレッドシートまたは好みのドキュメント形式にコピーアンドペーストすることで、手動でデータを抽出できます。たとえば、顧客として、購入の決定に役立つレビューをオンラインで探している場合は、データを手動でスクラップできます。

一方、大規模なデータセットを扱う場合は、自動化されたデータ抽出技術が必要です。社内のデータ抽出ソリューションを作成したり、そのようなタスクにプロキシ API やスクレイピング API を使用したりできます。

ただし、ターゲットとするサイトの一部はキャプチャによって保護されている可能性があるため、これらの手法はあまり効果的ではない可能性があります。ボットやプロキシの管理も必要になる場合があります。このようなタスクには多くの時間がかかり、抽出できるコンテンツの性質が制限される可能性があります。

スクレイピングブラウザ: 解決策

スクレイピングブラウザ-2
スクレイピングブラウザ-2

Bright Data の スクレイピング ブラウザ を使用すると、これらすべての課題を克服できます。このオールインワン ブラウザは、収集が難しい Web サイトからデータを収集するのに役立ちます。これはグラフィカル ユーザー インターフェイス (GUI) を使用するブラウザであり、Puppeteer または Playwright API によって制御されるため、ボットによって検出されません。

スクレイピング ブラウザには、ユーザーに代わってすべてのブロックを自動的に処理するロック解除機能が組み込まれています。ブラウザは Bright Data のサーバー上で開かれるため、大規模プロジェクトのデータをスクラップするために高価な社内インフラストラクチャは必要ありません。

Bright Data Scraping Browser の特徴

  • Web サイトの自動ロック解除: このブラウザは、CAPTCHA 解決、新しいブロック、フィンガープリント、および再試行を処理するために自動的に調整されるため、ブラウザを更新し続ける必要はありません。スクレイピングブラウザは実際のユーザーを模倣します。
  • 大規模なプロキシ ネットワーク: Scraping Browser には 7,200 万を超える IP があるため、任意の国をターゲットにすることができます。都市や通信事業者をターゲットにして、クラス最高のテクノロジーの恩恵を受けることができます。
  • スケーラブル: このブラウザは Bright Data インフラストラクチャを使用してすべてのリクエストを処理するため、同時に数千のセッションを開くことができます。
  • Puppeteer と Playwright の互換性: このブラウザーでは、Puppeteer (Python) または Playwright (Node.js) を使用して API 呼び出しを実行し、任意の数のブラウザー セッションを取得できます。
  • 時間とリソースの節約: プロキシを設定する代わりに、スクレイピング ブラウザがバックグラウンドですべてを処理します。また、このツールがバックグラウンドですべてを処理するため、社内インフラストラクチャをセットアップする必要もありません。

スクレイピングブラウザの設定方法

  • アカウントを作成する。 2 つのオプションが表示されます。 「無料トライアルを開始」と「Google で無料で開始」。とりあえず「無料トライアルを開始する」を選択して、次のステップに進みましょう。アカウントを手動で作成することも、Google アカウントを使用することもできます。
ブライトデータサインアップ-2
ブライトデータサインアップ-2
  • アカウントが作成されると、ダッシュボードにいくつかのオプションが表示されます。 「プロキシとスクレイピングインフラストラクチャ」を選択します。
ブライトデータツール-1
ブライトデータツール-1
  • 開いた新しいウィンドウで「スクレイピングブラウザ」を選択し、「開始」をクリックします。
スクレイピングブラウザ-1
スクレイピングブラウザ-1
  • 設定を保存してアクティブ化します。
スクレイピング-ブラウザ-アクティベーション-1
スクレイピング-ブラウザ-アクティベーション-1
  • 無料トライアルをアクティブ化します。最初のオプションでは、プロキシの使用に使用できる 5 ドルのクレジットが付与されます。この製品を試してみるには、最初のオプションをクリックしてください。ただし、ヘビー ユーザーの場合は、アカウントに 50 ドル以上をチャージすると、50 ドルが無料になる 2 番目のオプションをクリックできます。
  • お支払い情報を入力してください。プラットフォームから料金が発生することはありませんので、ご安心ください。請求情報は、あなたが新規ユーザーであり、複数のアカウントを作成して景品を求めていないことを確認するだけです。
  • 新しいプロキシを作成します。請求の詳細を保存したら、新しいプロキシを作成できます。 「追加」アイコンをクリックし、「プロキシの種類」としてスクレイピングブラウザを選択します。 「プロキシの追加」をクリックして次のステップに進みます。
新しいプロキシの作成
新しいプロキシの作成
  • 新しい「ゾーン」を作成します。新しいゾーンを作成するかどうかを尋ねるポップが表示されます。 「はい」をクリックして続行します。
新しいゾーンの作成
新しいゾーンの作成
  • 「コードと統合の例をチェックアウト」をクリックします。これで、ターゲット Web サイトからデータをスクラップするために使用できるプロキシ統合の例が得られます。 Node.js または Python を使用して、ターゲット Web サイトからデータを抽出できます。
コード例
コード例

Web サイトからデータを抽出する方法

これで、Web サイトからデータを抽出するために必要なものがすべて揃いました。私たちの Web サイト .com を使用して、Scraping Browser がどのように機能するかをデモンストレーションします。このデモでは、node.js を使用します。 Node.js がインストールされている場合は、この手順に従ってください。

次の手順を実行します;

  1. ローカル マシン上に新しいプロジェクトを作成します。フォルダーに移動し、script.js という名前を付けてファイルを作成します。スクレイピング コードをローカルで実行し、結果をターミナルに表示します。
  2. お気に入りのコード エディターでプロジェクトを開きます。 VsCodeを使用しています。
  3. パペティアをインストールします。このコマンドを使用して次のことを行います。 npm i puppeteer-core
  4. このコードを script.js ファイルに追加します。
 const puppeteer = require('puppeteer-core');

   // should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth='USERNAME:PASSWORD';

async function run(){

  let browser;

  try {

    browser = await puppeteer.connect({browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222`});

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2*60*1000);

    await page.goto('https://example.com');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    console.log(html);

  } 

  catch(e) {

    console.error('run failed', e);

  } 

  finally {

    await browser?.close();

  }

}

if (require.main==module)

     run();
  1. const auth='USERNAME:PASSWORD'; アカウントの詳細とともに。 「アクセスパラメータ」というタブでユーザー名、ゾーン名、パスワードを確認してください。
  2. ターゲット URL を入力します。私の場合、https://.com/authors にある .com 上のすべての著者のデータを抽出したいと考えています。

10 行目のコードを次のように変更します。

await page.goto('<a href="https://.com/authors/" target="_blank" rel="noopener">https://.com/authors/</a>');

最終的なコードは次のようになります。

 const puppeteer = require('puppeteer-core');

   // should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth='brd-customer-hl_bc09fed0-zone-zone2:ug9e03kjkw2c';

async function run(){

  let browser;

  try {

    browser = await puppeteer.connect({browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222`});

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2*60*1000);

    await page.goto('https://.com/authors/');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    console.log(html);

  } 

  catch(e) {

    console.error('run failed', e);

  } 

  finally {

    await browser?.close();

  }

}

if (require.main==module)

     run();
  1. このコマンドを使用してコードを実行します。
 node script.js

端末にこのようなものが表示されます

データのエクスポート方法

データの使用方法に応じて、いくつかの方法を使用してデータをエクスポートできます。現在、コンソールに出力するのではなく、data.html という名前の新しいファイルを作成するようにスクリプトを変更することで、データを HTML ファイルにエクスポートできるようになりました。

コードの内容は次のように変更できます。

 const puppeteer = require('puppeteer-core');

const fs = require('fs');

// should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth = 'brd-customer-hl_bc09fed0-zone-zone2:ug9e03kjkw2c';

async function run() {

  let browser;

  try {

    browser = await puppeteer.connect({ browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222` });

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2 * 60 * 1000);

    await page.goto('https://.com/authors/');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    // Write HTML content to a file

    fs.writeFileSync('data.html', html);

    console.log('Data export complete.');

  } catch (e) {

    console.error('run failed', e);

  } finally {

    await browser?.close();

  }

}

if (require.main == module) {

  run();

}

これで、このコマンドを使用してコードを実行できるようになります。

 node script.js

次のスクリーンショットでわかるように、端末には「データ エクスポートが完了しました」というメッセージが表示されます。

スクレイピングブラウザからデータをエクスポートする
スクレイピングブラウザからデータをエクスポートする

プロジェクト フォルダーを確認すると、数千行のコードを含む data.html という名前のファイルが表示されます。

エクスポートされたデータ
エクスポートされたデータ

スクレイピングブラウザを使用すると何を抽出できますか?

スクレイピング ブラウザを使用してデータを抽出する方法の表面をなぞっただけです。このツールを使用すると、著者の名前とその説明だけを絞り込んでスクラップすることもできます。

スクレイピング ブラウザを使用する場合は、抽出するデータセットを特定し、それに応じてコードを変更します。対象とする Web サイトと HTML ファイルの構造に応じて、テキスト、画像、ビデオ、メタデータ、リンクを抽出できます。

よくある質問

データ抽出とWebスクレイピングは合法ですか?

Web スクレイピングは物議を醸すトピックであり、あるグループはそれが不道徳であると主張し、他のグループは問題ないと考えています。 Web スクレイピングの合法性は、スクレイピングされるコンテンツの性質と対象となる Web ページのポリシーによって異なります。
一般に、住所や財務詳細などの個人情報を含むデータをスクレイピングすることは違法とみなされます。データをスクラップする前に、ターゲットとするサイトにガイドラインがあるかどうかを確認してください。公開されていないデータを廃棄しないように常に注意してください。

スクレイピングブラウザは無料のツールですか?

いいえ、Scraping Browser は有料サービスです。無料トライアルにサインアップすると、このツールにより 5 ドルのクレジットが付与されます。有料パッケージは、15 ドル/GB + 0.1 ドル/時間から始まります。 $20/GB + $0.1/h から始まる Pay As You Go オプションを選択することもできます。

スクレイピングブラウザとヘッドレスブラウザの違いは何ですか?

スクレイピング ブラウザはヘッドフル ブラウザであり、グラフィカル ユーザー インターフェイス (GUI) を備えています。一方、ヘッドレス ブラウザにはグラフィカル インターフェイスがありません。 Selenium などのヘッドレス ブラウザは、Web スクレイピングを自動化するために使用されますが、CAPTCHA やボット検出に対処する必要があるため、制限される場合があります。

まとめ

ご覧のとおり、 Scraping Browser を使用 すると、Web ページからのデータの抽出が簡素化されます。 Scraping Browser は Selenium などのツールに比べて使いやすいです。開発者でなくても、素晴らしいユーザー インターフェイスと優れたドキュメントを備えたこのブラウザを使用できます。このツールには、他のスクラップ ツールでは利用できないブロック解除機能があり、そのようなプロセスを自動化したいすべての人にとって効果的です。

ChatGPT プラグインによる Web サイトのコンテンツのスクレイピングを停止する方法を検討することもできます。

「スクレイピングブラウザでデータ抽出も簡単」についてわかりやすく解説!絶対に観るべきベスト2動画

【PythonによるWebスクレイピング入門】vol.02:Webページ内のテキストデータを自動で抽出(Selenium)

データ抽出は、Web ページから特定のデータを収集するプロセスです。ユーザーは、テキスト、画像、ビデオ、レビュー、製品などを抽出できます。データを抽出して、市場調査、センチメント分析、競合分析、およびデータの集計を実行できます。

扱うデータが少量の場合は、Web ページから特定の情報をスプレッドシートまたは好みのドキュメント形式にコピーアンドペーストすることで、手動でデータを抽出できます。たとえば、顧客として、購入の決定に役立つレビューをオンラインで探している場合は、データを手動でスクラップできます。

一方、大規模なデータセットを扱う場合は、自動化されたデータ抽出技術が必要です。社内のデータ抽出ソリューションを作成したり、そのようなタスクにプロキシ API やスクレイピング API を使用したりできます。

ただし、ターゲットとするサイトの一部はキャプチャによって保護されている可能性があるため、これらの手法はあまり効果的ではない可能性があります。ボットやプロキシの管理も必要になる場合があります。このようなタスクには多くの時間がかかり、抽出できるコンテンツの性質が制限される可能性があります。

スクレイピングブラウザ: 解決策

スクレイピングブラウザ-2
スクレイピングブラウザ-2

Bright Data の スクレイピング ブラウザ を使用すると、これらすべての課題を克服できます。このオールインワン ブラウザは、収集が難しい Web サイトからデータを収集するのに役立ちます。これはグラフィカル ユーザー インターフェイス (GUI) を使用するブラウザであり、Puppeteer または Playwright API によって制御されるため、ボットによって検出されません。

スクレイピング ブラウザには、ユーザーに代わってすべてのブロックを自動的に処理するロック解除機能が組み込まれています。ブラウザは Bright Data のサーバー上で開かれるため、大規模プロジェクトのデータをスクラップするために高価な社内インフラストラクチャは必要ありません。

Bright Data Scraping Browser の特徴

  • Web サイトの自動ロック解除: このブラウザは、CAPTCHA 解決、新しいブロック、フィンガープリント、および再試行を処理するために自動的に調整されるため、ブラウザを更新し続ける必要はありません。スクレイピングブラウザは実際のユーザーを模倣します。
  • 大規模なプロキシ ネットワーク: Scraping Browser には 7,200 万を超える IP があるため、任意の国をターゲットにすることができます。都市や通信事業者をターゲットにして、クラス最高のテクノロジーの恩恵を受けることができます。
  • スケーラブル: このブラウザは Bright Data インフラストラクチャを使用してすべてのリクエストを処理するため、同時に数千のセッションを開くことができます。
  • Puppeteer と Playwright の互換性: このブラウザーでは、Puppeteer (Python) または Playwright (Node.js) を使用して API 呼び出しを実行し、任意の数のブラウザー セッションを取得できます。
  • 時間とリソースの節約: プロキシを設定する代わりに、スクレイピング ブラウザがバックグラウンドですべてを処理します。また、このツールがバックグラウンドですべてを処理するため、社内インフラストラクチャをセットアップする必要もありません。

スクレイピングブラウザの設定方法

  • アカウントを作成する。 2 つのオプションが表示されます。 「無料トライアルを開始」と「Google で無料で開始」。とりあえず「無料トライアルを開始する」を選択して、次のステップに進みましょう。アカウントを手動で作成することも、Google アカウントを使用することもできます。
ブライトデータサインアップ-2
ブライトデータサインアップ-2
  • アカウントが作成されると、ダッシュボードにいくつかのオプションが表示されます。 「プロキシとスクレイピングインフラストラクチャ」を選択します。
ブライトデータツール-1
ブライトデータツール-1
  • 開いた新しいウィンドウで「スクレイピングブラウザ」を選択し、「開始」をクリックします。
スクレイピングブラウザ-1
スクレイピングブラウザ-1
  • 設定を保存してアクティブ化します。
スクレイピング-ブラウザ-アクティベーション-1
スクレイピング-ブラウザ-アクティベーション-1
  • 無料トライアルをアクティブ化します。最初のオプションでは、プロキシの使用に使用できる 5 ドルのクレジットが付与されます。この製品を試してみるには、最初のオプションをクリックしてください。ただし、ヘビー ユーザーの場合は、アカウントに 50 ドル以上をチャージすると、50 ドルが無料になる 2 番目のオプションをクリックできます。
  • お支払い情報を入力してください。プラットフォームから料金が発生することはありませんので、ご安心ください。請求情報は、あなたが新規ユーザーであり、複数のアカウントを作成して景品を求めていないことを確認するだけです。
  • 新しいプロキシを作成します。請求の詳細を保存したら、新しいプロキシを作成できます。 「追加」アイコンをクリックし、「プロキシの種類」としてスクレイピングブラウザを選択します。 「プロキシの追加」をクリックして次のステップに進みます。
新しいプロキシの作成
新しいプロキシの作成
  • 新しい「ゾーン」を作成します。新しいゾーンを作成するかどうかを尋ねるポップが表示されます。 「はい」をクリックして続行します。
新しいゾーンの作成
新しいゾーンの作成
  • 「コードと統合の例をチェックアウト」をクリックします。これで、ターゲット Web サイトからデータをスクラップするために使用できるプロキシ統合の例が得られます。 Node.js または Python を使用して、ターゲット Web サイトからデータを抽出できます。
コード例
コード例

Web サイトからデータを抽出する方法

これで、Web サイトからデータを抽出するために必要なものがすべて揃いました。私たちの Web サイト .com を使用して、Scraping Browser がどのように機能するかをデモンストレーションします。このデモでは、node.js を使用します。 Node.js がインストールされている場合は、この手順に従ってください。

次の手順を実行します;

  1. ローカル マシン上に新しいプロジェクトを作成します。フォルダーに移動し、script.js という名前を付けてファイルを作成します。スクレイピング コードをローカルで実行し、結果をターミナルに表示します。
  2. お気に入りのコード エディターでプロジェクトを開きます。 VsCodeを使用しています。
  3. パペティアをインストールします。このコマンドを使用して次のことを行います。 npm i puppeteer-core
  4. このコードを script.js ファイルに追加します。
 const puppeteer = require('puppeteer-core');

   // should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth='USERNAME:PASSWORD';

async function run(){

  let browser;

  try {

    browser = await puppeteer.connect({browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222`});

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2*60*1000);

    await page.goto('https://example.com');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    console.log(html);

  } 

  catch(e) {

    console.error('run failed', e);

  } 

  finally {

    await browser?.close();

  }

}

if (require.main==module)

     run();
  1. const auth='USERNAME:PASSWORD'; アカウントの詳細とともに。 「アクセスパラメータ」というタブでユーザー名、ゾーン名、パスワードを確認してください。
  2. ターゲット URL を入力します。私の場合、https://.com/authors にある .com 上のすべての著者のデータを抽出したいと考えています。

10 行目のコードを次のように変更します。

await page.goto('<a href="https://.com/authors/" target="_blank" rel="noopener">https://.com/authors/</a>');

最終的なコードは次のようになります。

 const puppeteer = require('puppeteer-core');

   // should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth='brd-customer-hl_bc09fed0-zone-zone2:ug9e03kjkw2c';

async function run(){

  let browser;

  try {

    browser = await puppeteer.connect({browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222`});

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2*60*1000);

    await page.goto('https://.com/authors/');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    console.log(html);

  } 

  catch(e) {

    console.error('run failed', e);

  } 

  finally {

    await browser?.close();

  }

}

if (require.main==module)

     run();
  1. このコマンドを使用してコードを実行します。
 node script.js

端末にこのようなものが表示されます

データのエクスポート方法

データの使用方法に応じて、いくつかの方法を使用してデータをエクスポートできます。現在、コンソールに出力するのではなく、data.html という名前の新しいファイルを作成するようにスクリプトを変更することで、データを HTML ファイルにエクスポートできるようになりました。

コードの内容は次のように変更できます。

 const puppeteer = require('puppeteer-core');

const fs = require('fs');

// should look like 'brd-customer-<ACCOUNT ID>-zone-<ZONE NAME>:<PASSWORD>'

const auth = 'brd-customer-hl_bc09fed0-zone-zone2:ug9e03kjkw2c';

async function run() {

  let browser;

  try {

    browser = await puppeteer.connect({ browserWSEndpoint: `wss://${auth}@zproxy.lum-superproxy.io:9222` });

    const page = await browser.newPage();

    page.setDefaultNavigationTimeout(2 * 60 * 1000);

    await page.goto('https://.com/authors/');

    const html = await page.evaluate(() => document.documentElement.outerHTML);

    // Write HTML content to a file

    fs.writeFileSync('data.html', html);

    console.log('Data export complete.');

  } catch (e) {

    console.error('run failed', e);

  } finally {

    await browser?.close();

  }

}

if (require.main == module) {

  run();

}

これで、このコマンドを使用してコードを実行できるようになります。

 node script.js

次のスクリーンショットでわかるように、端末には「データ エクスポートが完了しました」というメッセージが表示されます。

スクレイピングブラウザからデータをエクスポートする
スクレイピングブラウザからデータをエクスポートする

プロジェクト フォルダーを確認すると、数千行のコードを含む data.html という名前のファイルが表示されます。

エクスポートされたデータ
エクスポートされたデータ

スクレイピングブラウザを使用すると何を抽出できますか?

スクレイピング ブラウザを使用してデータを抽出する方法の表面をなぞっただけです。このツールを使用すると、著者の名前とその説明だけを絞り込んでスクラップすることもできます。

スクレイピング ブラウザを使用する場合は、抽出するデータセットを特定し、それに応じてコードを変更します。対象とする Web サイトと HTML ファイルの構造に応じて、テキスト、画像、ビデオ、メタデータ、リンクを抽出できます。

よくある質問

データ抽出とWebスクレイピングは合法ですか?

Web スクレイピングは物議を醸すトピックであり、あるグループはそれが不道徳であると主張し、他のグループは問題ないと考えています。 Web スクレイピングの合法性は、スクレイピングされるコンテンツの性質と対象となる Web ページのポリシーによって異なります。
一般に、住所や財務詳細などの個人情報を含むデータをスクレイピングすることは違法とみなされます。データをスクラップする前に、ターゲットとするサイトにガイドラインがあるかどうかを確認してください。公開されていないデータを廃棄しないように常に注意してください。

スクレイピングブラウザは無料のツールですか?

いいえ、Scraping Browser は有料サービスです。無料トライアルにサインアップすると、このツールにより 5 ドルのクレジットが付与されます。有料パッケージは、15 ドル/GB + 0.1 ドル/時間から始まります。 $20/GB + $0.1/h から始まる Pay As You Go オプションを選択することもできます。

スクレイピングブラウザとヘッドレスブラウザの違いは何ですか?

スクレイピング ブラウザはヘッドフル ブラウザであり、グラフィカル ユーザー インターフェイス (GUI) を備えています。一方、ヘッドレス ブラウザにはグラフィカル インターフェイスがありません。 Selenium などのヘッドレス ブラウザは、Web スクレイピングを自動化するために使用されますが、CAPTCHA やボット検出に対処する必要があるため、制限される場合があります。

まとめ

ご覧のとおり、 Scraping Browser を使用 すると、Web ページからのデータの抽出が簡素化されます。 Scraping Browser は Selenium などのツールに比べて使いやすいです。開発者でなくても、素晴らしいユーザー インターフェイスと優れたドキュメントを備えたこのブラウザを使用できます。このツールには、他のスクラップ ツールでは利用できないブロック解除機能があり、そのようなプロセスを自動化したいすべての人にとって効果的です。

ChatGPT プラグインによる Web サイトのコンテンツのスクレイピングを停止する方法を検討することもできます。

「スクレイピングブラウザでデータ抽出も簡単」についてわかりやすく解説!絶対に観るべきベスト2動画

【PythonによるWebスクレイピング入門】vol.02:Webページ内のテキストデータを自動で抽出(Selenium)