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

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

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

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

# Seleniumの操作

# モジュール

# coding: UTF-8
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でイメージ音楽のページソースを取得します.

# ページソースの表示
driver.page_source

# ページ一覧の取得

イメージ音楽のページから,2ページ目,3ページ目のURLを取得します.
2ページ目,3ページ目のURLを示すclass名のpagerは1箇所しかないので,find_element_by_class_nameを使います.単数形のelementですので注意してください.

# classで指定(1つ:find_element_by_class_name)
# ※ find_element!!
element = driver.find_element_by_class_name("pager")
# 2ページ目,3ページ目のURLを示すtagを取得
aPageTags = element.find_elements_by_tag_name("a")
# tagから2ページ目,3ページ目のURLを取得
for aPageTag in aPageTags:
    # tagからhref要素を取得
    page_url = aPageTag.get_attribute('href')
    print(page_url)

# WebElementのソース取得

find_element_by_class_name()で取得したWebElementのソースを確認します.

print(element.get_attribute('innerHTML')) # WebElementからhtmlを取得

# mp3のダウンロード先のURL

イメージ音楽のページから,各mp3のダウンロード先のURLを取得します.
イメージとしては,右クリックで「リンク先をダウンロード」する際の参照先となるURLを探す作業です.
mp3のURLを示すclass名のdownloadは複数箇所あるので,find_elements_by_class_nameを使います.複数形のelementsですので注意してください..
取得した各mp3の詳細ページのURLを元にダウンロード先のURLに設定されていたので,ダウンロード先のURLはreplace()で置換して取得しました.

# classで指定(複数:find_elements_by_class_name)
# ※ find_elements!!
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')

# mp3のダウンロード

取得したmp3のURLからmp3ファイルをダウンロードします.イメージとしては,リンク先をダウンロードの作業です.

dlfile = 'bgm/' + dlurl.split('/')[-1] # 保存ファイル名
urllib.request.urlretrieve(dlurl, dlfile) #ダウンロード実行:要はリンク先をダウンロード

# まとめ

ここまででおおよそのseleniumの操作を検索しながら,必要な工程を実装しました.次の記事でdef文でまとめようと思います.

# 参考サイト

10分で理解する Selenium (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+Docker+Selenium+Chromeでウェブスクレイピングをする part3

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

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

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

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

Python+Docker+Selenium+Chromeで甘茶の音楽工房ウェブスクレイピングします.本稿では,一通りの設定を実施します.