こんにちは、python系YouTuberのじゅんぺーです。
下記URLの動画で紹介したコードの紹介です。
【python 自動化】Webページを自動操作する方法
https://youtu.be/rvyvyln3Rho
初めにターミナル(mac)もしくはコマンドプロンプト(Windows)内で以下を実行してライブラリをインポートしましょう。
pip install selenium
pip install requests
次にChromeドライバのインストールです。以下のリンクからダウンロードできます。
https://chromedriver.chromium.org/downloads
pythonプログラムコードを以下に示します。
検索ワードやアクセスするページを変えて使ってみてください。
driver_path = ""
にはダウンロードしたChromeドライバのパスを入力してください。
main.py
# Web操作に必要なライブラリのインポート
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 画像保存に使用するライブラリのインポート
import os
import requests
word = "吉岡里帆" # Yahoo画像 検索するワード
# Webdriverの設定
from selenium import webdriver
options = webdriver.ChromeOptions()
driver_path = "" # Chromeドライバのパスを入れてください
driver = webdriver.Chrome(driver_path ,options=options)
# yahoo画像へアクセス
url = "https://search.yahoo.co.jp/image/search?p={}".format(word)
driver.get(url) # 指定したURLへアクセス
urls = [] # 画像URLを格納するリスト
# 止まるまでスクロールする
while True:
prev_html = driver.page_source # スクロール前のソースコード
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 最下部までスクロール
sleep(1.0) # 1秒待機
current_html = driver.page_source # スクロール後のソースコード
# スクロールの前後で変化が無ければループを抜ける
if prev_html != current_html:
prev_html = current_html
else:
# 「もっと見る」ボタンがあればクリック
try:
button = driver.find_element_by_class_name("sw-Button")
button.click()
except:
break
# 画像タグをすべて取得
elements = driver.find_elements_by_tag_name("img")
# すべての画像URLを抜き出す
for elem in elements:
url = elem.get_attribute("src")
if url not in urls:
urls.append(url) # urlをリストに追加する
driver.close() # driverをクローズする
for i, url in enumerate(urls):
file_name = f"吉岡里帆_{i}.png" # 画像ファイル名
os.makedirs(os.getcwd() + '/yoshioka_img', exist_ok = True)
download_path =os.getcwd() + '/yoshioka_img/' +file_name
# 画像を保存
r = requests.get(url, stream=True)
if r.status_code == 200:
with open(download_path, "wb") as f:
f.write(r.content)
# End
プログラムコードは以上です。
よかったらYouTubeチャンネルにも遊びにきてください!!
https://www.youtube.com/channel/UCQubE-5fBR6eLb62Jxn6jCw
最後までお読みいただきありがとうございました!!