こんにちは。
Pythonを使ってGoogle画像検索にアクセスして画像を取得してみました。
適当に書いて動かしているのでガバガバです。
###最初に
まあ適当にデスクトップに image
的なファイルを作成してターミナルを開きましょう。
cd desktop/image
して
vim image.py
とでもしてプロジェクトを作成してください。
エディタがvimなのは僕の趣味です。
言い忘れていましたが、これにはPython3と多少のモジュールが必要になるのでインストールしてください。
pip3 install モジュール名
すればインストールできるのでモジュールエラーがでたらやってみてください。
####てことでコード書きます。
写経するなりコピペするなりしてください。
import requests
import random
import shutil
import bs4
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
ここまででモジュール関連は終わりです。
あ、sslは証明が正しくないサイトをスクレイピングしたりするのに(それ以外でも)使えるので覚えておきましょう、幸せになれます。
def image(data):
Res = requests.get("https://www.google.com/search?hl=jp&q=" + data + "&btnG=Google+Search&tbs=0&safe=off&tbm=isch")
Html = Res.text
Soup = bs4.BeautifulSoup(Html,'lxml')
links = Soup.find_all("img")
link = random.choice(links).get("src")
return link
def download_img(url, file_name):
r = requests.get(url, stream=True)
if r.status_code == 200:
with open(file_name+".png", 'wb') as f:
r.raw.decode_content = True
shutil.copyfileobj(r.raw, f)
def code():
code = ""
for i in range(10):
code += random.choice("aaaaaaaaaaaa")
return code
while True:
num = input("検索回数:")
data = input("検索ワード:")
for _ in range(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")なんかも自分好みに変更しても楽しいかもしれませんね。
####全体
一応「全部コピペさせろよ!!!」って人のために全体を置いておきます。
import requests
import random
import shutil
import bs4
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
def image(data):
Res = requests.get("https://www.google.com/search?hl=jp&q=" + data + "&btnG=Google+Search&tbs=0&safe=off&tbm=isch")
Html = Res.text
Soup = bs4.BeautifulSoup(Html,'lxml')
links = Soup.find_all("img")
link = random.choice(links).get("src")
return link
def download_img(url, file_name):
r = requests.get(url, stream=True)
if r.status_code == 200:
with open(file_name+".png", 'wb') as f:
r.raw.decode_content = True
shutil.copyfileobj(r.raw, f)
def code():
code = ""
for i in range(10):
code += random.choice("aaaaaaaaaaaa")
return code
while True:
num = input("検索回数:")
data = input("検索ワード:")
for _ in range(int(num)):
link = image(data)
download_img(link, code())
print("OK")
ここまでできたらターミナルを開いて
python3 image.py
をします。
モジュールエラーがでたら最初に戻ってインストールしなおしてください。
このレベルのPythonのエラーは大抵ググれば解決するのでがんばってください。
エラーもなく動作すれば
検索回数:
を指定すれば
検索ワード:
となって成功すればOKとでてきて最初に作成した iamge
ファイルの中にaaaaaaaa.png
的な名前でワードにそった画像が保存されているはずです。
保存されていればおしまいです。お疲れ様でした。
追記
適当に書いた記事なのに思ったよりもストックされてしまって困惑しています()
Googleのスクレイピングはグレーゾーンなので自己責任でお願いします。