Pythonにて「すべてのimgタグの画像ファイルURLを表示する方法」

Pythonにて「すべてのimgタグの画像ファイルURLを表示する方法」

下記の赤字の3つの画像ファイルのURLを表示するプログラムを作ってみましょう。直接アクセスして読み込みを行うので相対URLを絶対URLに変換します。

ちなみに、読み込み解析するHTMLファイルは下記のように独自にサンプルとして作り、ネット上にアップロードしておきました。

HTML <div id=”chapter1″>
<h2>ステップ1 プログラミング</h2>
<ol>
<li>HTML</li>
<li>CSS</li>
<li>Javascript</li>
</ol>
</div>

<div id=”chapter2″>
<h2>ステップ2 プログラミング</h2>
<ol>
<li>Vue.js</li>
<li>Jquery</li>
<li>Python</li>
</ol>
</div>

<a href=”http://www.roadtoupload.com”>チャレンジ プログラミング</a><br>
<a href=”../Python一年生/Python1年生_17.html”>画像ファイルから数字を予測するプログラムを作る</a>
<br>
<img src=”http://www.roadtoupload.com/学びファイル/python2年生/IMG_20201024_160706.jpg” width=”200px” height=”200px”>
<img src=”../../picture/IMG_20190102_160717.jpg” width=”200px” height=”200px”>
<img src=”../../picture/IMG_20201122_144244.jpg” width=”200px” height=”200px”>


それでは早速、「すべてのimgタグの画像ファイルURLを表示する」プログラムを作ってみましょう。

import requests
from bs4 import BeautifulSoup
import urllib

load_url =”https://www.roadtoupload.com/学びファイル/python2年生/Python_sample3.html”
html = requests.get(load_url)
soup = BeautifulSoup(html.content, “html.parser”)

for element in soup.find_all(“img”):
    src = element.get(“src”)

    image_url = urllib.parse.urljoin(load_url, src)
    filename = image_url.split(“/”)[-1]
    print(image_url, “>>”, filename)

解説

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円程ならコスパよく、買っておいてよかったと満足してます。


わからないことはプロフェッショナルから学ぶのが一番

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。