Beautiful Soup Python スクレイピング

【Python】スクレイピングしたhtmlから特定の要素以降のデータを削除する

この記事は約2分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です。requestsとbeautifulsoupでスクレイピングしていると取得したHTMLの中で、アフィリエイト広告など特定の文字列以降いらねぇって場合があると思います。

 

beautifulsoupにも特定の要素だけをピンポイントで削除するdiscompose()がありますが、こういったニーズとは少し違います。そんな時にどうすればいいのか、という話ですが結論からいくとsoupを文字列に変換してstr型のデフォルト機能であるstr.splitメソッドで特定の文字以降を削除するというのが簡単だと思います。

 

スポンサーリンク
スポンサーリンク

str.splitメソッドで特定の文字以降を削除する

 

イメージとしてはこんな使いかたです。

 

import requests
from bs4 import BeautifulSoup

r = requests.get('http://~~~~')
soup = BeautifulSoup(r.content, 'html_parser')

# スクレイピングした記事のテキストの中にh4タグのプロモーションが含まれている場合それ以降を削除する
str(soup).split('<h4>プロモーション</h4>')[0]

 

beautufulsoupの型はstr()で文字列に変換できます。文字列からsoupに戻すのはエンコード関連でめんどくさいのでこの処理は最後にやるのが無難だと思います。では~

 

 

 

参考:https://www.relief.jp/docs/python-get-string-before-specific-character.html

 

コメント

タイトルとURLをコピーしました