前回こちらのコンテンツにて「すべてのタグを探して表示する」ことを「.find_all(“タグ名”)」で学びました。
しかし、これは指定したタグの要素を「すべて」見つけて取り出す命令でした。
この部分のこれだけを取り出したい、というような場合はこれではだめですね
そこで今度はidやclassで検索範囲を絞り込んで表示する命令をしたいと思います。
今回、テスト用として自前で下記のような簡単なWEBページサンプルを用意してみました。
完成はこんな感じです。
このHTMLをスクレイピングしてみましょう。
まずは、「id=chapter2」を探して、表示させてみます。
解説
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解析の命令を代入します。 |
chapter2 = soup.find(id=”chapter2″) | 変数chapter2に指定したidの範囲を検索して代入します。 |
print(chapter2) | データを表示します。 |
実行結果
しっかり指定のid部分を取り出せて表示することができました。
今度はこの要素に対してliタグをすべて取り出してみましょう。
解説
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解析の命令を代入します。 |
chapter2 = soup.find(id=”chapter2″) | 変数chapter2に指定したidの範囲を検索して代入します。 |
for element in chapter2.find_all(“li”): | |
print(element.text) | .textを付けて文字列だけを取り出し、データを表示します。 |
実行結果
うまく取り出すことができました。
*尚、ここではバージョン「Python 3.10.1」を使用しています。
この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。