Pythonのbeautifulsoupで、タグが複数ある場合の2番目のタグの中のテキストのみを表示する方法

目次

Pythonのbeautifulsoupとは

Pythonでbeautifulsoupを使って情報を取得するときに詰まったのでメモ。本題に行きたい人はこの部分は飛ばしてくれ。
beautifulsoupはhtmlからデータを抽出するライブラリ。
htmlは誰にでも見れる情報だが、その構造は複雑で見にくい。これを欲しい情報だけを整理して渡してくれるのがbeautifulsoup。Pythonのライブラリだ。
ライブラリはある目的のため(今回で言えばhtml情報の取得)の機能を集めたパッケージの総称であり、パッケージとは複数のモジュールを集めたものであり、モジュールとは複数の関数をまとめたものである。

複雑だがプログラミングをやる上では一応の理解はしておきたい概念群である。

なぜこんなことを書いたのかといえば下のcrayonというプログラムを表示するためのプラグインのコードがトップページの記事の要約文で出てきちゃっていたのでそれを隠すためだ。

本題

ここからが本題。

<h1><img>あいうえお</h1>

みたいな感じでh1タグの中の「あいうえお」というテキストだけを抜き出したい。

そこて、find_allで抜いてみるとh1タグが二つある。

<h1>xxxxx</h1>
<h1>あいうえお</h1> 

こんな感じだ。

今回抜き出したいのは2番目の「あいうえお」なので、

title=soup.find_all('h1')[1]

のように[1]をつけてあげると2番目のh1が抜き出せる。

プログラミングは0から始まるので2番目は1になるのだ。012…と続く。

で、このままだとまだh1などのタグがついたままなので、

print(title.get_text()) 

get_textでtext部分だけを抜いてやる。

一方で、

print(type(title.get_text()))

しかし、このtypeを先頭に持ってきて書く書き方はダメだった。
他のサイトではこちらなら何でもテキスト抜き取れると書いてあったがダメだったので備忘。

まだ学びはじめで何故こうなるのかはわからない。

Pythonは奥が深くて面白い。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

京都大学、京都大学大学院と進学し塾の先生をやっていましたが資格試験に失敗。
30代過ぎて職歴が無く就職活動も失敗し、自営業でスタートすることを決意。せどりと倉庫の日雇いバイトと家庭教師から始めて今ではせどり、情報発信、プログラミングで年収1000万ほどになりました。

コメント

コメントする

目次