Python+Docker+Selenium+Chromeでウェブスクレイピングをする part3
Docker+Selenium+Chromeで甘茶の音楽工房ウェブスクレイピングします.本稿では,前回のまでの工程をdef文を用いて定義します.
作業用BGMとして甘茶の音楽工房の音楽をダウンロードして聞いていました.いい加減面倒臭くなってきたので,ウェブスクレイピングでダウンロードしていきます.
こちらでも閲覧できますし,まだnoteにしていない記事もあります.
https://www.hamlet-engineer.com/posts/websc_selenium03.html
有料枠設定にしていますが,youtubeの投げ銭的な物として,お考えください.
モジュール
# 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
Python + Selenium + ChromeでChromeバージョンに合ったChromeDriverを自動インストールする方法
Dockerコンテナからseleniumを使ってスクレイピング
Python×SeleniumでWebスクレイピング実践
Selenium webdriverよく使う操作メソッドまとめ
Docker上でSeleniumとHeadless ChromeとPython3を動かす
【Python】seleniumでWebElementからhtmlを取得する
Python + Selenium + Chrome でファイル保存まわり
ここから先は
¥ 100
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?