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

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

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

こちらでも閲覧できますし,まだnoteにしていない記事もあります.
https://www.hamlet-engineer.com/posts/websc_selenium02.html

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文でまとめようと思います.

有料枠設定にしていますが,youtubeの投げ銭的な物として,お考えください.

参考サイト

10分で理解する Selenium
Dockerコンテナからseleniumを使ってスクレイピング
Python×SeleniumでWebスクレイピング実践
Selenium webdriverよく使う操作メソッドまとめ
Docker上でSeleniumとHeadless ChromeとPython3を動かす
【Python】seleniumでWebElementからhtmlを取得する
Python + Selenium + Chrome でファイル保存まわり

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?