HiÐΞClassic

Google Colaboratoryからスクレイピング

SHOGAKU
2 years ago
エラー回避方法サイトのスクショ画像を添付してツイートツイート

Google Colaboratoryからスクレイピングを行おうとすると、下記エラーが発生したので

WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: -6

その回避方法についてと、試しにサイトのスクショを撮ってツイートをするまでをした内容について備忘録として残しておく

エラー回避方法

以下に書いていた内容を使えば回避できました。
https://github.com/kaliiiiiiiiii/Selenium-Profiles/issues/10#issuecomment-1387618009

colabのUbuntuのバージョンが18から20に上がった影響とのことです。

丸コピした内容は以下

# エラー回避 参照
# https://github.com/kaliiiiiiiiii/Selenium-Profiles/issues/10#issuecomment-1387618009

%%shell
# Ubuntu no longer distributes chromium-browser outside of snap
#
# Proposed solution: https://askubuntu.com/questions/1204571/how-to-install-chromium-without-snap

# Add debian buster
cat > /etc/apt/sources.list.d/debian.list <<'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster.gpg] http://deb.debian.org/debian buster main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster-updates.gpg] http://deb.debian.org/debian buster-updates main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-security-buster.gpg] http://deb.debian.org/debian-security buster/updates main
EOF

# Add keys
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A

apt-key export 77E11517 | gpg --dearmour -o /usr/share/keyrings/debian-buster.gpg
apt-key export 22F3D138 | gpg --dearmour -o /usr/share/keyrings/debian-buster-updates.gpg
apt-key export E562B32A | gpg --dearmour -o /usr/share/keyrings/debian-security-buster.gpg

# Prefer debian repo for chromium* packages only
# Note the double-blank lines between entries
cat > /etc/apt/preferences.d/chromium.pref << 'EOF'
Package: *
Pin: release a=eoan
Pin-Priority: 500


Package: *
Pin: origin "deb.debian.org"
Pin-Priority: 300


Package: chromium*
Pin: origin "deb.debian.org"
Pin-Priority: 700
EOF

# Install chromium and chromium-driver
apt-get update
apt-get install chromium chromium-driver

# Install selenium
pip install selenium

これはUbuntuでChromiumブラウザとSeleniumをインストールするためのBashスクリプト。このスクリプトは以下のことを行っている

  1. Debian Busterのリポジトリを追加
  2. Debian Busterリポジトリ用の鍵をダウンロードしてインストール
  3. Chromiumパッケージに関連してDebian Busterリポジトリを優先するように設定
  4. ChromiumブラウザとChromiumドライバをインストール
  5. Seleniumをインストール

サイトのスクショ

SeleniumとPillowライブラリを使用して、Chromeブラウザを自動操作してウェブページのスクリーンショットを撮る

!pip install pillow
from selenium import webdriver
from PIL import Image
from IPython.display import Image as Img

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--disable-browser-side-navigation')
options.add_argument('--disable-gpu')

driver = webdriver.Chrome(options=options)

url = 'https://637g5-siaaa-aaaaj-aasja-cai.raw.ic0.app/token/mxzaz-hqaaa-aaaar-qaada-cai'
driver.get(url)

# Set the window size to a desired width and height
driver.set_window_size(1920, 1080)

driver.save_screenshot('screenshot.png')

driver.quit()

img = Image.open('screenshot.png')
img.save('screenshot_small.png', dpi=(72, 72), optimize=True)

Img(filename='screenshot_small.png')
  1. SeleniumとPillowライブラリをインストール
  2. Chromeブラウザの設定を設定(例えばヘッドレスモード、画面サイズ、など)
  3. 指定されたURLのページにアクセスしてスクリーンショットを撮影
  4. スクリーンショットを保存してDPIを変更
  5. ブラウザを終了
  6. スクリーンショットの画像を表示


画像を添付してツイート

ツイートは以下の流れも参考までに
https://hide.ac/articles/sIYvQ5lcf

!pip install tweepy
import tweepy

# Twitter認証情報は環境変数から取得
auth = tweepy.OAuthHandler(os.environ["TWITTER_CONSUMER_KEY"], os.environ["TWITTER_CONSUMER_SECRET"])
auth.set_access_token(os.environ["TWITTER_ACCESS_TOKEN"], os.environ["TWITTER_ACCESS_SECRET"])

# APIオブジェクトを作成
api = tweepy.API(auth)

# Update the status with the screenshot
with open("screenshot_small.png", "rb") as imagefile:
    api.update_with_media("screenshot_small.png", status="test Screenshot #ckbtc Screenshot https://637g5-siaaa-aaaaj-aasja-cai.raw.ic0.app/token/mxzaz-hqaaa-aaaar-qaada-cai")

Twitterアカウントに画像とテキストを投稿するコード

このコードは、事前にセットアップされたTwitter APIキー(環境変数 TWITTER_CONSUMER_KEY、TWITTER_CONSUMER_SECRET、TWITTER_ACCESS_TOKEN、TWITTER_ACCESS_SECRET)を使用して、OAuth認証を行う。

認証後、APIオブジェクトを作成し、"screenshot_small.png"という名前の画像と

テキスト
"test Screenshot #ckbtc Screenshot https://637g5-siaaa-aaaaj-aasja-cai.raw.ic0.app/token/mxzaz-hqaaa-aaaar-qaada-cai"
をTwitterアカウントに投稿。


ツイート

以下のようになる


コメント
いいね
投げ銭
最新順
人気順
SHOGAKU
2 years ago
コメント
いいね
投げ銭
最新順
人気順
トピック
アプリ

Astar Network

DFINITY / ICP

NFT

DAO

DeFi

L2

メタバース

BCG

仮想通貨 / クリプト

ブロックチェーン別

プロジェクト

目次
Tweet
ログイン