Challenge programming

Python

「HTMLを解析する」「すべてのタグを探して表示する」
Beautiful Soupを使って。

こちらのコンテンツにて「タグを探して表示する」ことを「.find("タグ名")」で学びました。

しかし、これは指定したタグの要素を「1つだけ」見つけて取り出す命令でした。

一般的なWEBページにはもっとたくさんの要素があり構成されています。

そこで今度は「すべての要素」を探して表示する命令をしたいと思います。

今回、テスト用として自前で下記のような簡単なWEBページサンプルを用意してみました。

HTML <!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python すべてのタグを探して表示する</title>
</head>
<body>
<div id="chapter1">
<h2>学ぼう、プログラミング</h2>
<ol>
<li>HTML</li>
<li>CSS</li>
<li>Javascript</li>
</ol>
</div>
<div id="chapter2">
<h2>もっと学ぼう、プログラミング</h2>
<ol>
<li>Vue.js</li>
<li>Jquery</li>
<li>Python</li>
</ol>
</div>
<a href="http://www.roadtoupload.com">チャレンジ プログラミング</a><br>
<a href="http://www.kenkosale.net">健康情報</a> <br>
<img src="IMG_20201024_160706.jpg" width="200px" height="200px">
<img src="IMG_20201108_133625.jpg" width="200px" height="200px">
<img src="IMG_20201031_114146.jpg" width="200px" height="200px">
</body>
</html>

完成はこんな感じです。


このHTMLをスクレイピングしてみましょう。

まずは、liタグを探して、表示させてみます。

すべての要素を探すときは、「.find_all("タグ名")」とします。タグをすべて検索して、見つかった要素をリスト形式で返します。

リストの中身はfor文を使えば、1つずつ取り出せます。

import requests
from bs4 import BeautifulSoup
load_url = "https://www.roadtoupload.com/学びファイル/python2年生/Python_sample1.html"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
for element in soup.find_all("li"):
    print(element.text)

解説

import requests事前にコマンドプロンプトでインストールしたインターネットにアクセス命令する外部ライブラリ「requests」、これをimportします。
from bs4 import BeautifulSoup事前にコマンドプロンプトでインストールしたHTMLを解析する外部ライブラリ「BeautifulSoup」、これが入っているbs4というパッケージからBeautifulSoupをimport
load_url = "https://www.roadtoupload.com/学びファイル/python2年生/Python_sample1.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("li"):すべてのliタグを探し、リストの中身はfor文を使い1つずつ取り出します。
print(element.text)インデントさせて(スペースを作り)、文字列だけを取り出す.textをつけてデータを表示します。

実行結果

命令通り、すべてのliタグを取り出し表示させることができました。

*尚、ここではバージョン「Python 3.10.1」を使用しています。

この本を参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。



もっと深く学びたい人にはこちらもどうぞ。| For those who want to learn more deeply, this is also recommended.

キャリアアップに必要なスキルを取得しよう。| Get the skills you need to advance your career.

Pythonエンジニア育成推進協会公式認定スクール | Officially certified school of Python Engineer Development Promotion Association.

ぺージの先頭に戻る(Return to top of page)


©2020年9月 Challenge programming

プライバシーポリシー