元職業エンジニアの生き方

これまでとこれからを考えるための備忘録

SeleniumとPythonでYahoo画像検索から自動で画像をダウンロードする

宮本です。 Twitterコチラ

はじめに

機械学習に手を出す際に「画像取得だ!」と思いつきでやってみました。 BeautifulSoupでも出来そうですがあえてSeleniumを使いました。

仕様

  1. キーワードでYahoo画像検索
  2. 最初の1枚目を自動でダウンロード

環境的なあれこれ


実装

python:yahoo_image.py


import os, io
import urllib2 as url lib
import selenium.webdriver from PIL import Image

kw = '道後温泉'
url = 'https://search.yahoo.co.jp/image/search?p=' + kw
DL = os.getcwd() print('KW : ' + kw) print('DL : ' + DL)

webdriver = selenium.webdriver
chop = webdriver.ChromeOptions()
chop.add_argument('--disable-gpu')
chop.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path='your chrome driver path', chrome_options = chop)
driver.implicitly_wait(15)

driver.get(url)
image_cls = driver.find_element_by_class_name('tb')
image_url = image_cls.find_element_by_tag_name('a').find_element_by_tag_name('img').get_attribute('src') image_data = urllib.urlopen(image_url)
image_file = io.BytesIO(image_data.read())
im = Image.open(image_file)
im.save(DL + '/' + kw + ' .jpg')

driver.quit()

 

結果

これで同フォルダ内に道後温泉の検索結果の1枚目がDLされるはずです。

※ヘッドレスモードではないので、ブラウザが立ち上がって閉じる動作を見れます!

 

要素の取り出しがタグやクラス名なのですが、XPATHでもできます。

ちなみにImageあたりのImportですが、Python2だとちょっと手間取ったりします。

 

これらについては気が向いたらやっていきたいです。