2021年5月13日pythonScrapingはじめに前回、pythonの標準ライブラリにあるurllibのrequestを使ってHTMLを取得する流れをご説明しました。HTML取得まではライブラリの力を借りて、スムーズに言ったと思われたのではないでしょうか?しかし、取得したHTMLから必要な内容を取り出す際に、前回は組み込み関数であるsplit()を使用しましたが、取り出す内容が複雑になればなるほどこうしたカンタンな内容では難しくなっていきます。世の中のWebページは複雑化の一途をたどっています。各サイトマスターがユーザーにより魅力的なサイトを作成しようと様々な趣向を凝らす中で、数年前より更に複雑なWebサイトをよく見かけるようになりました。この複雑化により、スクレイピングで狙った内容を取得する難易度はどんどn上がっています。本記事ではスクレイピングしたHTMLから要素を取得する方法として正規表現を用いる方法をご紹介します。正規表現はざっくり言えばプログラミングにおけるパターンマッチングのための手法です。実は古くから使われる中で発展してきた方法で、由緒正しいのですが、その一方で初心者には高い敷居を感じさせる方法です。正規表現を使うかといえば、要素取得を行う上で、特定のタグとタグの間に挟まれた要素を取得したいとします。したときにタグにパターンマッチさせ、その間にある要素を取得する、といった使い方をします。この辺はなかなか口で言われてもわからないと思いますので、ソースを追いながらご説明していきたいと思います。Pythonの正規表現を使ってHTMLタグの要素を取得する処理の流れそれでは処理の流れをご説明します!正規表現操作を行うモジュールなどをインポートするまず正規表現操作を行うモジュール「re」をインポートします。メールの返信のような感じですが、正規表現がRegexである点からこの名前がつけられたのだと思います。指定のサイトからhtmlをダウンロードしてデコードするこの辺の処理は前回と同じです。ライブラリの力を借りれば数行でできます。正規表現でtitleタグの間の要素を取得し、タグを除去するぱっと見、何かよくわからない呪文に見えますが、この部分が正規表現になります。reモジュールのsearchメソッドで正規表現で第一引数で指定された部分を取得します。pring関数で標準出力に出力するおなじみのprint関数で出力します。re.sub(r'<(.*?)>',"",title)print(title)おわりに所見の正規表現はわけのわからない呪文の用に見えたかもしれません。正規表現を完全に理解するのは大変ですが、参考サイトとして以下のQiitaのページを載せておきます。有用な使い方などご紹介していければ、と思います。必須サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。免責事項に関してリンク先のように取り扱うことといたします。自動化ラボっ!シェアTOPへ。