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)