Help us understand the problem. What is going on with this article?

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

ふくだ学習録とは?

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

読了した本

データベースエンジニア養成読本 [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にする!

fukuda_fu
フロントエンドエンジニアです。普段はReact書いたりしてます。 勉強がてらにアウトプットします。よろしくです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした