[Python] BeautifulSoup4で、innerHTMLとouterHTMLの取得
こんにちは、@yoheiMuneです。
Pythonのスクレイピングで利用するBeatifulSoup4で、innerHTMLとouterHTMLを取得する実装を行ったので、ブログにも書いておきたいと思います。
最後になりますが本ブログでは、vフロントエンド、PHP、サーバー、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
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、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!






