0
2

More than 1 year has passed since last update.

【python/selenium】Webサイトを自動操作する方法

Last updated at Posted at 2021-11-05

こんにちは、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
最後までお読みいただきありがとうございました!!

0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2