#【概要】
大目標として、女性服の分類機を作成します。今回はページ内の画像をすべて取得する手法について触れます。
前回のディープラーニングを行うための素材を集めるための手法の記事の続きです。
前回:ディープラーニング 服装の分類機 素材集め編_1
https://qiita.com/drafts/c74e1a5058234a4de66d/edit
#【目標】
ネットでディープラーニングに使用する画像を取得する
#【環境】
Windows10
google crome (ブラウザ)
python3.6
selenium (pythonライブラリ)
Python + Selenium
私はセレニウムを実践する上でこちらの記事に大変お世話になりました。
https://qiita.com/Azunyan1111/items/b161b998790b1db2ff7a
###HTMLを見る
webページから情報や画像を取得したい場合、そのページのhtml構造を確認します。ウェブページ上でF12キーを押してみましょう。画面右側にhtmlを確認できると思います。それがこの記事のページのhtmlです。「開発者モード」といいます。
サンプルURL:https://item.rakuten.co.jp/mobacaba/k837/
まずはこのHTMLのどこに画像があるのかを探します。
大きなパーカーの画像で右クリック→「検証」を押しましょう。
すると開発者モードの画面に変化があると思います。そこを見てみると、下のようにかかれています。
< 以下のサンプルコードではパージ内の画像をすべて取得します。
###サンプルコード
def selenium_test():
site_a = <"URL">
savepath = <"画像を保存するパス">
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get(site_a)
tg_img_items = driver.find_elements_by_tag_name('img')
cnt = 0
for elem_img_item in tg_img_items:
try:
cnt += 1
imglink = elem_img_item.get_attribute("src")
imgdata = req.urlopen(imglink).read()
img_save = os.path.join(savepath, str(cnt) + "test.jpg")
with open(img_save, 'wb') as f:
f.write(imgdata)
except:
pass
# 相手サイトへの負荷軽減のためのクールタイム設定
time.sleep(2)
if __name__ == "__main__":
selenium_test()
以上でページの取得できる画像は大方取得できます。
ただし、これだと不要な画像も取得してしまうため、工夫が必要となります。
次にはhtmlのタグをよく観察して必要な画像だけを取得できるための記事を書きます。
#終わりに
ディープラーニングの素材集めにこんな苦労しなくても、データセットがすでにある場合がほとんどなのでしょうな。。
気が向いたらこの次の記事は書きます。データセットが見つかったら書くのは後回しにします。
失礼します。