Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

PythonでGoogle画像検索をして画像をフォルダに保存する

$
0
0

こんにちは。

Pythonを使ってGoogle画像検索にアクセスして画像を取得してみました。
適当に書いて動かしているのでガバガバです。

最初に

まあ適当にデスクトップに image的なファイルを作成してターミナルを開きましょう。

cd desktop/image

して

vim image.py

とでもしてプロジェクトを作成してください。
エディタがvimなのは僕の趣味です。

言い忘れていましたが、これにはPython3と多少のモジュールが必要になるのでインストールしてください。

pip3 install モジュール名

すればインストールできるのでモジュールエラーがでたらやってみてください。

てことでコード書きます。

写経するなりコピペするなりしてください。

image.py
importrequestsimportrandomimportshutilimportbs4importsslssl._create_default_https_context=ssl._create_unverified_context

ここまででモジュール関連は終わりです。
あ、sslは証明が正しくないサイトをスクレイピングしたりするのに(それ以外でも)使えるので覚えておきましょう。

image.py
defimage(data):Res=requests.get("https://www.google.com/search?hl=jp&q="+data+"&btnG=Google+Search&tbs=0&safe=off&tbm=isch")Html=Res.textSoup=bs4.BeautifulSoup(Html,'lxml')links=Soup.find_all("img")link=random.choice(links).get("src")returnlinkdefdownload_img(url,file_name):r=requests.get(url,stream=True)ifr.status_code==200:withopen(file_name+".png",'wb')asf:r.raw.decode_content=Trueshutil.copyfileobj(r.raw,f)defcode():code=""foriinrange(10):code+=random.choice("aaaaaaaaaaaa")returncodewhileTrue:num=input("検索回数:")data=input("検索ワード:")for_inrange(int(num)):link=image(data)download_img(link,code())print("OK")

続いて image,download_img,codeという関数を宣言して中身を書いていきましょう。
まあ簡単に言えばスクレイピングして取得したデータをフォルダ内にaaaaaaという名前で保存しているだけです。
なので

code += random.choice("aaaaaaaaaaaa")

のaaaaaaaの名前はなんでもOKということですね。
そのあとのwhile Trueの場所ではアクセスが成功した先でワードを指定したりしているだけなのでそんなに難しくないです。
最後のPrint("OK")なんかも自分好みに変更しても楽しいかもしれませんね。

一応「全部コピペさせろよ!!!」って人のために全体を置いておきます。

image.py
importrequestsimportrandomimportshutilimportbs4importsslssl._create_default_https_context=ssl._create_unverified_contextdefimage(data):Res=requests.get("https://www.google.com/search?hl=jp&q="+data+"&btnG=Google+Search&tbs=0&safe=off&tbm=isch")Html=Res.textSoup=bs4.BeautifulSoup(Html,'lxml')links=Soup.find_all("img")link=random.choice(links).get("src")returnlinkdefdownload_img(url,file_name):r=requests.get(url,stream=True)ifr.status_code==200:withopen(file_name+".png",'wb')asf:r.raw.decode_content=Trueshutil.copyfileobj(r.raw,f)defcode():code=""foriinrange(10):code+=random.choice("aaaaaaaaaaaa")returncodewhileTrue:num=input("検索回数:")data=input("検索ワード:")for_inrange(int(num)):link=image(data)download_img(link,code())print("OK")

ここまでできたらターミナルを開いて
python3 image.pyをします。

モジュールエラーがでたら最初に戻ってインストールしなおしてください。
このレベルのPythonのエラーは大抵ググれば解決するのでがんばってください。

エラーもなく動作すれば

検索回数:

を指定すれば

検索ワード:

となって成功すればOKとでてきて最初に作成した iamgeファイルの中にaaaaaaaa.png的な名前でワードにそった画像が保存されているはずです。

保存されていればおしまいです。お疲れ様でした。


Viewing all articles
Browse latest Browse all 5608

Trending Articles