Google Colaboratory に chrome, selenium をインストール
chromium をインストールできるように
%%shell
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
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
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
chromium、 driver、 selenium をインストール
!apt-get update
!apt-get install chromium chromium-driver
!pip install selenium
selenium 起動確認
ヘッドレスモードで起動を確認
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import requests
import io
from PIL import Image
from urllib.request import urlopen as uReq
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)
driver.implicitly_wait(10)
ツイートから画像をダウンロード
Beautiful Soup ではimgまでアクセスできないのでこうする
url = "https://twitter.com/idolpicture2/status/1635762393920815105"
driver.get(url)
# article 内から img を検索
elems_article = driver.find_elements(By.TAG_NAME, 'article')
for elem_article in elems_article:
imgs = elem_article.find_elements(By.TAG_NAME, 'img')
for img in imgs:
src = img.get_attribute('src')
# ファイルの保存
try:
srcs = src.split("/")[-1].split('?')
filename = "{}.{}".format( srcs[0], srcs[1].split('&')[0].replace('format=', '') )
imagefile = open(filename, "wb")
imagefile.write(uReq(src).read())
imagefile.close()
except Exception as e:
print(e)
右側のディスクスペースに保存される
画像を Google Drive に保存する場合
こんなふうに Google Drive をマウントした後に画像を保存
import os
from google.colab import drive
drive.mount("/content/drive")
os.chdir("/content/drive/MyDrive/")
スクリーンショットを撮りたい場合
driver.save_screenshot("screenshot.png")
画像が取得できない場合
ログインしていないとツイートが見れないことがあります。
その時はこちらの通りにログインした後に画像を参照してみてください。