3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

今年の振り返りAdvent Calendar 2023

Day 16

ページ情報の抜き取りについて

Posted at

はじめに

この記事は2023年度の振り返りです。

今回は、グループウェアのカレンダー情報を取得するためにやった内容となります

問題点

グループウェアからデータを抜き取って利用することを考えていたのですが、利用しているグループウェアにAPIが存在していないことことが分かり、スクレイプする方針にしました。

ただし、スクレイプするにしても、ツールは複数。

  • selenium
  • cypress
  • puppeteer
  • playwright

自分は、認証画面があることからseleniumをチョイスしました
(rspecのsystem testでもseleniumが利用してることがありましたので。。。)

ざっくり調査

seleniumには、いくつかの実行モードがあります。

  • スタンドアロン
    • ブラウザが限定され
  • ハブとノード
    • ブラウザの種類別にノードを建てることができ、どのブラウザで実行するとか設定することができる。
    • また、バージョン毎にノードを分けることでバージョン毎に実施などができる
  • (例外)ダイナミックグリッド
    • 基本的な動きはハブとノードと同じ
    • ハブに実行依頼が着たら、ノードをコンテナで立ち上げ、コンテナ内で実施する
      • 実施が終われば、コンテナは破棄される

遊ぶ

コチラの記事を元に、色々遊ばせてもらいました

compose.yml

services:
  node-red:
    image: nodered/node-red:latest
    ports:
      - "1880:1880"
    restart: always

  # Standalone
  standalone-chrome:
    image: selenium/standalone-chrome:4.16.1-20231212
    ports:
      - 4444:4444
    shm_size: 2g
    environment:
      SE_VNC_PASSWORD: 'password'
      SE_SESSION_REQUEST_TIMEOUT: 10
      SE_SESSION_RETRY_INTERVAL: 10

  # # Hub and Nodes
  # selenium:
  #   container_name: kbot_selenium
  #   image: selenium/hub:4.14.1
  #   hostname: selenium
  #   ports:
  #     - '4444:4444'
  #   tty: true
  #   stdin_open: true

  # chrome:
  #   container_name: kbot_chrome
  #   image: selenium/node-chrome:4.14.1
  #   depends_on:
  #     - selenium
  #   environment:
  #     TZ: Asia/Tokyo
  #     SE_EVENT_BUS_HOST: selenium
  #     SE_EVENT_BUS_PUBLISH_PORT: 4442
  #     SE_EVENT_BUS_SUBSCRIBE_PORT: 4443

  #     SE_SESSION_REQUEST_TIMEOUT: 10
  #     SE_SESSION_RETRY_INTERVAL: 10

  #     SE_NODE_MAX_SESSIONS: 40
  #     SE_NODE_OVERRIDE_MAX_SESSIONS: 'true'
  #     SE_VNC_PASSWORD: 'password'
  #   volumes:
  #     - /dev/shm:/dev/shm
  #   shm_size: '2gb'
  #   tty: true
  #   stdin_open: true

さいごに

seleniumは重かったり、遅かったりという問題点はあるものの、確実に操作していくことから一番確実に動くものだと思っています。(歴史も古く記事も多いですし)
また、今回node-redで利用して遊んでましたが、node-redの場合システムに詳しくない人でも比較的触りやすいと思いますので、E2Eテストなどの敷居も下がるのではないかと思ってたりします。

この記事は以上となります。薄いですが、ご容赦ください。
(何かの機会に調査することがあれば、別途作成したいと思います)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?