下記の赤字の3つの画像ファイルのURLを表示するプログラムを作ってみましょう。直接アクセスして読み込みを行うので相対URLを絶対URLに変換します。
ちなみに、読み込み解析するHTMLファイルは下記のように独自にサンプルとして作り、ネット上にアップロードしておきました。
それでは早速、「すべてのimgタグの画像ファイルURLを表示する」プログラムを作ってみましょう。
解説
import requests | 事前にコマンドプロンプトでインストールしたインターネットにアクセス命令する外部ライブラリ「requests」、これををimport |
from bs4 import BeautifulSoup | 事前にコマンドプロンプトでインストールしたHTMLを解析する外部ライブラリ「BeautifulSoup」、これが入っているbs4というパッケージからBeautifulSoupをimport |
import urllib | 相対URLを絶対URLに変換するurllibライブラリをimport |
load_url =”https://www.roadtoupload.com/学びファイル/python2年生/Python_sample3.html” | 変数load_urlに解析するWEBページアドレスを代入 |
html = requests.get(load_url) | 変数htmlにネット上のHTMLファイルを読み込む命令のrequests.get(load_url)を代入します。 |
soup = BeautifulSoup(html.content, “html.parser”) | 変数soupにBeautifulSoupを使ったHTML解析の命令を代入します。 |
for element in soup.find_all(“img”): | リストから1つずつ取り出すためfor文を使用し、すべてのimg要素を探しリストで返すfind_all(”img”)とします。 |
src = element.get(“src”) | 変数srcに取得したsrc属性を代入します。 |
image_url = urllib.parse.urljoin(load_url, src) | 相対URLを絶対URLに変換する命令をします。それを変数image_urlとします。 |
filename = image_url.split(“/”)[-1] | URLの一番最後のファイル名を取り出します。「-1」は後ろから1番目を指す。それを変数filenameとします。 |
print(image_url, “>>”, filename) | 出力する際は絶対URL、そして>>を加え、取得したファイル名を書き出す。 |
実行結果
相対URLだった2つも絶対URLに変換されて取り出せていますね。*尚、ここではバージョン「Python 3.10.1」を使用しています。
この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。