2018/07/18更新

[Python] BeautifulSoup4で、innerHTMLとouterHTMLの取得

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
Pythonのスクレイピングで利用するBeatifulSoup4で、innerHTMLとouterHTMLを取得する実装を行ったので、ブログにも書いておきたいと思います。



目次




前提

例えば、以下のようなHTMLがあったとします。
<h1 class="title">
    <p>サイトのタイトル<img src="logo.png" alt="logo"></p>
</h1>
それを、以下のように読み込んで、BeautifulSoupのインスタンスを作成し、h1を取得します。
from bs4 import BeautifulSoup

html = """
<h1 class="title">
    <p>サイトのタイトル<img src="logo.png" alt="logo"></p>
</h1>
"""

soup = BeautifulSoup(html, "html.parser")

h1 = soup.find('h1')
以降の説明では、変数h1に対して処理を行います。



innerHTMLを取得する

innerHTMLを取得するには、decode_contentsというメソッドを利用します。
print(h1.decode_contents(formatter="html"))

# '\n<p>サイトのタイトル<img alt="logo" src="logo.png"/></p>\n'
このようにタグ内部のHTMLを取得可能です。



outerHTMLを取得する

変数h1自体がHTMLを表現しているので、その文字列表現を取得することでouterHTMLを取得できます。
# outerHTMLの取得例
print(str(h1))

# <h1 class="title">\n<p>サイトのタイトル<img alt="logo" src="logo.png"/></p>\n</h1>
このようにouterHTMLを取得することができます。



最後に

スクレイピングのお仕事で、今回の内容を使う機会がありました。こういうTipsは知っていれば効率が上がって良いですよね〜。今後もブログに書き出していこうと思います。

最後になりますが本ブログでは、vフロントエンド、PHP、サーバー、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。