Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Created April 30, 2023 07:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyuki/1bad2f4da10c890a4cf6a0f5fc7b3aae to your computer and use it in GitHub Desktop.
Save hyuki/1bad2f4da10c890a4cf6a0f5fc7b3aae to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話: Headlessブラウザについて

Model: GPT-4

Date: 2023-04-30

Google ChomeのようなブラウザをいわゆるHeadlessでコントロールするのにいい方法は何でしょうか。特定のWebサイトにアクセスして情報を得たり、投稿を行ったりするのをプログラム的にやりたいのですが。

Headlessブラウザをコントロールするための一般的な方法は、PuppeteerやSeleniumなどの自動化フレームワークを使うことです。これらのツールは、プログラムでブラウザを操作して特定のWebサイトにアクセスし、情報を取得したり、投稿を行ったりするのに適しています。

Puppeteer: Puppeteerは、Google Chromeチームによって開発されており、Node.jsのライブラリです。Headless ChromeやChromiumブラウザを操作するために設計されています。使い方は以下の通りです。 まず、Puppeteerをインストールします。

npm i puppeteer

次に、以下のようなサンプルコードを使って、Puppeteerを使った操作を行います。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  // ここで情報取得や投稿を行うコードを書く
  await browser.close();
})();

Selenium: Seleniumは、ウェブアプリケーションのテストのための自動化フレームワークですが、Headlessブラウザを操作するためにも使用できます。Python, Java, C#, Rubyなどの言語で利用できます。Pythonでの使い方は以下の通りです。 まず、SeleniumとChromeドライバーをインストールします。

pip install selenium

次に、以下のようなサンプルコードを使って、Seleniumを使った操作を行います。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://example.com')
# ここで情報取得や投稿を行うコードを書く
driver.quit()

どちらの方法も、プログラムでブラウザを操作してWebサイトにアクセスし、情報を取得や投稿を行うことができます。どちらを使うかは、プロジェクトの要件や好みに応じて選んでください。

PuppeteerとSeleniumではどちらがいいんでしょうか。

PuppeteerとSeleniumのどちらが良いかは、プロジェクトの要件や使用するプログラミング言語、また個人の好みによります。それぞれの特徴と利点を以下に示します。

Puppeteerの特徴と利点:

  • Node.jsで開発されており、JavaScript/TypeScriptでの開発に適しています。
  • Google Chromeチームが開発しているため、最新のChromeやChromiumブラウザと互換性が高いです。
  • APIが比較的シンプルで使いやすいです。
  • ページのスクリーンショットやPDFの生成が容易です。

Seleniumの特徴と利点:

  • Python, Java, C#, Rubyなど複数のプログラミング言語をサポートしています。
  • 主要なブラウザ(Chrome, Firefox, Safari, Edgeなど)に対応しています。
  • ウェブアプリケーションのテストに広く使用されており、豊富なリソースが存在します。
  • ブラウザ間のテストを容易に行うことができます。

どちらのツールを選ぶべきかは、以下のような要素を考慮してください。

  • 使用するプログラミング言語: JavaScript/TypeScriptを使用するプロジェクトであればPuppeteerが、他の言語を使用する場合はSeleniumが適しています。
  • 対応ブラウザ: 特定のブラウザ(Chrome/Chromium)に特化している場合はPuppeteerが、複数のブラウザをサポートしたい場合はSeleniumが適しています。
  • APIの使いやすさ: PuppeteerはAPIがシンプルで使いやすいとされていますが、Seleniumも一般的には問題なく利用できます。 最終的に、どちらのツールを使うかはプロジェクトの要件や個人の好みによって決定してください。どちらのツールも有用であり、適切に使えば目的を達成できるでしょう。

ありがとうございます。まずは少し試してみます。

どういたしまして!ぜひ試してみて、どちらのツールがあなたのプロジェクトに適しているかを判断してください。PuppeteerやSeleniumに関するドキュメントやチュートリアルも参考にして、使い方を学んでみてください。もし質問があれば、いつでもお気軽にお尋ねください。成功をお祈りしています!

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

Puppeteer old Headless deprecation warning:
    In the near feature `headless: true` will default to the new Headless mode
    for Chrome instead of the old Headless implementation. For more
    information, please see https://developer.chrome.com/articles/new-headless/.
    Consider opting in early by passing `headless: "new"` to `puppeteer.launch()`
    If you encounter any bugs, please report them to https://github.com/puppeteer/puppeteer/issues/new/choose.

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

◆Chrome’s Headless mode gets an upgrade: introducing --headless=new - Chrome Developers
https://developer.chrome.com/articles/new-headless/

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

@hyuki
Copy link
Author

hyuki commented Apr 30, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment