LoginSignup
2
1

More than 3 years have passed since last update.

【ふくだ学習録】アプリ制作part8【35日目】

Posted at

ふくだ学習録とは?

ふくだが学習したことの備忘録。
目に見える形で残すことによってやる気を出す個人的な作戦です。
他人に見せるように書いているわけではないので、すごく読みにくいです。

読了した本

データベースエンジニア養成読本 [DBを自由自在に活用するための知識とノウハウ満載!]
ゼロから作るDeepLearning
PHPフレームワーク CakePHP 3入門
SQLアンチパターン
Docker入門

今読んでいる本

なし

アプリ制作

docker環境へseleniumとgoogle chrome(headless chrome)追加

スクレイピングを実施するときに、headless chromeで行いたい。ここに至った流れは下記。

scrapyによるスクレイピング実施

取得したい値が取得できない

取得したい要素がJSで動的に作成されているので、ブラウザを用いてスクレイピングしないと取得できないっぽい(推測)

chrome使おう

それならheadless chrome使おう

dockerコンテナ内にインストールしよう

って感じです。(前回と今回の作業にの再整理)

以下参考にしたサイトです。
Headless ChromeをDocker上で動かして、E2Eのテスト
ChromeとPythonのchromedriver-binaryのバージョンを合わせたい。

chromiumを使用する

上記した参考サイトでは、Debain系のLinuxを使用していたが、今回自分はalpineLinuxで作成していっているので、そのままでは進めない。
具体的には下記コードが通らない。

RUN sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apk/repositories/sources.list.d/google.list'

というのもalipineには/etc/apk...といったディレクトリがそもそもないとのこと。(まぁそりゃそう)
まじかーと思って「alpineのパッケージ管理用ディレクトリを探して、それに記載変更しよう」と思っていたのですが、下記サイトを見つけました。

どうやらalpine用のchromiumというパッケージがあるとのこと。
ここからはchromium使っていこうかと思う。

How can we install google-chrome-stable on alpine image in dockerfile using dpkg?

現段階のDockerfile(スクレイピングサーバ)

今の段階ではこんな感じ

FROM python:3.6-alpine

RUN apk add --update --no-cache \
    # scrapyに必要なライブラリの追加
    build-base \
    python-dev \
    zlib-dev \
    libxml2-dev \
    libxslt-dev \
    openssl-dev \
    libffi-dev \
    # headless chromeのために必要なライブラリの追加
    udev \
    ttf-freefont \
    chromium

ADD pip_requirements.txt /tmp/pip_requirements.txt
RUN pip install -r /tmp/pip_requirements.txt

# スクレイピング時に日本語化けを防ぐため、フォントを追加
RUN mkdir /noto

ADD https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip /noto 

WORKDIR /noto

RUN unzip NotoSansCJKjp-hinted.zip && \
    mkdir -p /usr/share/fonts/noto && \
    cp *.otf /usr/share/fonts/noto && \
    chmod 644 -R /usr/share/fonts/noto/ && \
    fc-cache -fv

WORKDIR /
RUN rm -rf /noto

ENTRYPOINT tail -f /dev/null

ADD ./app /usr/src/app
WORKDIR /usr/src/app

今日の一言

結局chromechromedriverもどっちもインストールせず!!ようやく作れる!はず!

環境(docker)構築で結構時間を取られてしまってるーーー。
「軽量Linuxええやん!」って思ってalpine使っていったけど、やっぱり参考にするサイトとか事例では違うディストリビューションの方が圧倒的に多いから、変に工数かかっちゃってる感は否めない。

もう多分詰まりそうなところは抜けだけど、これ以上時間かかるようやったらalpine版のpythonイメージやめる!Ubuntuにする!

2
1
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
2
1