Anki用画像調達 スクレイピング(google画像検索画面のスクショ)試行錯誤の記録

語学などの学習で暗記する際、楽に効率的に暗記していきたい。

Ankiというアプリがあるが、これは暗記カードアプリで、教材をほぼゼロからカスタマイズできる。

教材には画像も入れることができる。

例えば単語。

もしグーグル検索で引っかかった画像がいくつか暗記カードに入っていたら、かなりイメージしやすい。

しかしめちゃくちゃ時間かかりそう、無理。

 

それを自動でやってくれるプログラム?を見つけた。

これをやろうと試行錯誤した記録を残しておく。

完全なるメモで人に見せる形ではないものの、自分や誰かの手助けになるかもしれない。

 

 

 

こういう勝手にネットで検索して情報収集してくれるのをスクレイピングというようです。

github.com

 

Pythonというプログラミング言語で動くらしい。

ここにたどり着くまでに数時間はかかった気がする。

 

techacademy.jp

 

 

とりあえずやってみようと思う。

 

【私のスペック】

一言でいうと、プログラミングはさっぱり。

C言語とかJAVAとかいう単語しか聞いたことないレベル。

平成中期にHTMLとCSSを苦労して使ってホームページを運営していた程度。

 

【うちのPC】

わからんけどなんかそれぽい部分書いておけばきっと役にたつ。

Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz   3.20 GHz

実装RAM16.0 GB

Windows 10 Home

python3.9.6

 

f:id:yoshiharay:20210911180933p:plain

pythonのバージョン

 

 

googledriverをネットからダウンロード

ちゃんとバージョンはchromeと合わせた。

 

以下に置いてみた

C:\Users\*私の名前*\AppData\Local\Programs\Python\Python39\Scripts

 

コマンドプロントを立ち上げる

pip install Pillow

Pillow、selenium、あとなんだっけ、とかを打ち込んでいく

(なんかそいういうソフトをインストールするコマンドらしい)

 

Pillowて何?

note.nkmk.me

 

.pyて何?

www.tech-teacher.jp

 

 

 

 

 

 

techacademy.jp

 

 

調べていくと全く同じことをやった方を発見。

teratail.com

当然ですがわたしなどより知識があるようで、消す場所追加する場所もはっきりしておられる。

 

k-kuro.hatenadiary.jp

 

この質問は途中で見つけたので、下の調べた部分はもっと後進的というかよくわかっていないことをしています。

 

 

 

 

 

qiita.com

 

# -*- coding: utf-8 -*-

import sys

# START: Frawned approach to change default encoding
# But I intentionally take this approach since it's easy and believe it non-problematic in this limited program.
# See discussion detail here.
# https://stackoverflow.com/questions/3828723/why-should-we-not-use-sys-setdefaultencodingutf-8-in-a-py-script
reload(sys)
sys.setdefaultencoding('UTF8')
# END: Frawned approach to change default encoding

消す。

 

f:id:yoshiharay:20210911164606p:plain

error1

stringI0がないとのこと

f:id:yoshiharay:20210911165059p:plain

インストール1

f:id:yoshiharay:20210911165118p:plain

errors

このバージョンにはないから別の機能使えみたいなエラーですかね…

import StringIO

from io import StringIO

k-kuro.hatenadiary.jp

 

 

とりあえずいけるとこまで無謀にも読み込んでみた。

43行目

f:id:yoshiharay:20210911170344p:plain

43

f:id:yoshiharay:20210911173515p:plain

errored

blog.pyq.jp

インデントがそろってませんとのこと。

いや4つですし。

 

いままでコマンドプロントダイレクト入力でしたが、

python.exeから入力しても同じ。当然か。

 

 

わけわからんので、とりあえず置いといて、

ちょっと戻ってそれぞれ何してるか定義を読んでいく。

 

 

 

 

 

 

 

f:id:yoshiharay:20210911180013p:plain

path

 

def…関数の定義。

def f(x)= って感じかな。まずX=とする、これをY=X+********に代入して…ていう感じかなあ。

udemy.benesse.co.jp

と思っていたらそのようだ。このサイトわかりやすいな。半分しか理解できなかったけど、とても助かる。超初心者にはありがたい。

 

 

 

 

def mkdir_p(path):

フォルダを作るらしい。

note.nkmk.me

Try以降は、繰り返し処理時に同じフォルダに既にフォルダがあると無理!というのを避ける内容らしい。

バージョンの違いで書き方に差があるらしいがあとでうまくいかなかったら直そう。

 

pathてなに?

note.nkmk.me

じゃあ本文のpathってところは私がpathを指定しなければならないのでは?

という疑問が残るが…

この定義を使うときにわかるか…。

 

 

ところでピリオド、アンダーバー、スラッシュってどう違うのか?

アンダーバー…自分用の関数の名づけなどに使える

medium.com

 

バックスラッシュ…windowsでは改行とかタブの意味になってしまうらしい。パスの指定とかで\が入っているとうまく動かなくなるのでスラッシュに書き換えが必要。

¥はバックスラッシュの日本語変換版のよう。つまり¥=バックスラッシュ?

qiita.com

 

f:id:yoshiharay:20210911195436p:plain

filename

 


re.search…文字列にパターンとマッチする部分があるかを調べる

 

atmarkit.itmedia.co.jp

python.keicode.com

('[^\w\.\-_]', text): 英数字とかが入ってるテキストだったら

hashlib.sha256ハッシュ値16進形式文字列)を求める

()の中にutf-8とあるのは日本語でもエラー出さない為

こういう解釈であってますか…?

pg-chain.com

 

 

 

f:id:yoshiharay:20210911211101p:plain

snapshot all

この定義は長いので区切りながら解読しよう。

 

f:id:yoshiharay:20210911211147p:plain

snapshot1

os.path.join ()の中の,カンマで区切られた文字列を結合する

www.sejuku.net

このドットって何?

→パソコンで言ったら大フォルダの中のフォルダ、みたいなものらしい。

kankatsu338.hatenablog.com

 

Options.dir

で、これどこ指すの?

わからないので飛ばす。

"%s.jpg"  …… 文字列.jpg として出力。

qiita.com

% get_filename(Options.prefix + word)

ここで指定した値が上の部分の「文字列」に変換されるらしい。

www.javadrive.jp

Options.prefix + word

意味が全く分からず検索してもうまく出てこない。

飛ばす。

 

idx = "%03d" % (idx + 1)

idx= … a=a+1 という1を足す関数らしい。

%03d … dが10進法で、03の3は3桁整数で、という意味のよう。

単語帳が1000単語だったら1000個目だけ4桁にならないか?

とりあえずいまはこのままで。

gammasoft.jp

www.k-cube.co.jp

f:id:yoshiharay:20210911222047p:plain

snapshot2

os.path.isfile(fname) …fnameというファイル名が存在しているか確認している

Options.force_save

不明。

 

fnameというファイル名が存在していて、かつOptions.force_saveがfalseだと

 

ai-inter1.com

 

 

 

toukei-lab.com

グーグル立ち上げ→検索→クリック→スクショ

 

 

qiita.com

グーグル検索画像を保存。