Python+Docker+Selenium+Chromeでウェブスクレイピングをする part3

Docker+Selenium+Chromeで甘茶の音楽工房ウェブスクレイピングします.本稿では,前回のまでの工程をdef文を用いて定義します.

作業用BGMとして甘茶の音楽工房 (opens new window)の音楽をダウンロードして聞いていました.いい加減面倒臭くなってきたので,ウェブスクレイピングでダウンロードしていきます.

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# スクリプト

# モジュール

# coding: UTF-8
import os
import requests
import urllib.request
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selene.driver import SeleneDriver
from webdriver_manager.utils import chrome_version
from webdriver_manager.chrome import ChromeDriverManager

# selenium.webdriverの起動(docker)

# docker上でselenium.webdriverの起動
def webdriver_start():
    # Chrome のオプションを設定する
    options = webdriver.ChromeOptions()

    # Selenium Server に接続する
    driver = webdriver.Remote(
        command_executor='http://localhost:4444/wd/hub',
        options=options,
    )
    return driver

# selenium.webdriverの起動(ローカル)

# ローカル上でselenium.webdriverの起動
def webdriver_local_start():
    # versionに応じたchrome driver のインストール
    version = chrome_version()
    url = 'http://chromedriver.storage.googleapis.com/LATEST_RELEASE_' + version
    response = requests.get(url)

    options = Options()
    options.add_argument('--headless')

    # インストールしたchrome driverでchromeを起動
    driver = SeleneDriver.wrap(webdriver.Chrome(
        executable_path=ChromeDriverManager().install(), 
        chrome_options=options))
    
    return driver

# webドライバーで甘茶の音楽工房の音楽をダウンロード

イメージ音楽のページから,2ページ目,3ページ目のURLを取得します.

# webドライバーで甘茶の音楽工房の音楽をダウンロード
def amacha_page_DL(driver):
    # 出力ディレクトリ作成
    os.makedirs('bgm', exist_ok=True)
    # WebElementから各mp3のダウンロード先URLを取得
    elements = driver.find_elements_by_class_name("download")

    for element in elements:
        #print(element.get_attribute('innerHTML')) # WebElementからhtmlを取得
        # mp3の詳細ページのURL,tagで取得
        aTag = element.find_element_by_tag_name("a")
        # mp3のダウンロードページのURL
        dlurl = aTag.get_attribute('href').replace('music_', 'mp3/').replace('.html', '.mp3')
        dlfile = 'bgm/' + dlurl.split('/')[-1]
        urllib.request.urlretrieve(dlurl, dlfile) #ダウンロード実行:要はリンク先をダウンロード
    return driver.current_url

# webドライバーで甘茶の音楽工房のイメージ音楽ごとのページ情報を取得

# webドライバーで甘茶の音楽工房のイメージ音楽ごとのページ情報を取得
def amacha_page_tags(driver):
    # WebElementから次ページのURLを取得
    # classで指定(1つ:find_element_by_class_name:element!!)
    element = driver.find_element_by_class_name("pager")
    # 次ページのURL,tagで取得
    aPageTags = element.find_elements_by_tag_name("a")
    
    return aPageTags

# 甘茶の音楽工房の全ページ中の音楽をダウンロード

# 甘茶の音楽工房の全ページ中の音楽をダウンロード
def amacha_DL(image_url):
    # 甘茶の音楽工房にアクセス
    driver = webdriver_start()
    driver.get(image_url)
    # イメージ音楽の最初のページをダウンロード
    print(amacha_page_DL(driver))
    # 2ページ目,3ページ目のURLを示すtagを取得
    aPageTags = amacha_page_tags(driver)
    # tagから2ページ目,3ページ目のURLを取得
    for aPageTag in aPageTags:
        # tagからhref要素を取得
        page_url = aPageTag.get_attribute('href')
        # 次ページのURLにアクセス
        next_driver = webdriver_start()
        next_driver.get(page_url)
        # ダウンロード
        print(amacha_page_DL(next_driver))

# 甘茶の音楽工房のダウンロード実行

image_music_url = ['https://amachamusic.chagasi.com/image_kurai.html']
amacha_DL(image_music_url)

# まとめ

甘茶の音楽工房 (opens new window)の音楽のダウンロードを実装しました.別シリーズでダウンロードしたmp3を乱数で任意の再生時間で結合してみようと思います.

# 参考サイト

10分で理解する Selenium (opens new window)
Python + Selenium + ChromeでChromeバージョンに合ったChromeDriverを自動インストールする方法 (opens new window)
Dockerコンテナからseleniumを使ってスクレイピング (opens new window)
Python×SeleniumでWebスクレイピング実践 (opens new window)
Selenium webdriverよく使う操作メソッドまとめ (opens new window)
Docker上でSeleniumとHeadless ChromeとPython3を動かす (opens new window)
【Python】seleniumでWebElementからhtmlを取得する (opens new window)
Python + Selenium + Chrome でファイル保存まわり (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

Python+Selenium+ChromeでウェブスクレイピングしてYouTubeの動画をダウンロードする

Python+Selenium+ChromeでウェブスクレイピングしてYouTubeの動画をダウンロードする

Python+Selenium+ChromeでウェブスクレイピングしてYouTubeの動画をダウンロードします.本稿では,OfflibertyをSeleniumでダウンロードします

Python+Docker+Selenium+Chromeでウェブスクレイピングをする part2

Python+Docker+Selenium+Chromeでウェブスクレイピングをする part2

Python+Docker+Selenium+Chromeで甘茶の音楽工房ウェブスクレイピングします.本稿では,seleniumの操作を検索しながら必要な工程を実装します.jupyterだと楽です.