Beautiful Soup

BeautifulSoupで空白が入るクラス名のHTML要素を抽出する方法

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

 

よくMENTAのスクレイピング関係の質問を受け付けていると「BeautifulSoupで空白が入るクラス名の要素を抽出するにはどうすればいいですが」というものが頻繁に来るので、テンプレ用にメモしておきます

 

結論からいうとfind()で取得できることもあるのですが、たまにできないことがあるのでそういう場合はそのタグをcss selectorとしてselect()を使用することで解決できるパターンが多いです。

 

BeautifulSoupで空白が入るクラス名の要素を抽出する

 

今回は自分のこのブログのトップページにある「class=”entry-card-thumb card-thumb e-card-thumb”」というタグの部分を試しに抽出します

 

 

from bs4 import BeautifulSoup 
import requests 
res = requests.get('https://tkstock.site/')
soup = BeautifulSoup(res.content) 
elems = soup.select('.entry-card-thumb.card-thumb.e-card-thumb')
for elem in elems:
  print(elem)

 

 

<実行結果>

<figure class=”entry-card-thumb card-thumb e-card-thumb”> <img alt=”” class=”entry-card-thumb-image no-image list-no-image” height=”198″ src=”https://tkstock.site/wp-content/themes/cocoon-master/images/no-image-320.png” width=”320″/> <span class=”cat-label cat-label-52″>GAS(GoogleAppScript)</span> </figure> <figure class=”entry-card-thumb card-thumb e-card-thumb”>…

 

こんな感じで.select()を使えば空行のあるclass名の要素でもfind()と同じように取得することが可能です。これは参考書とかにはあまり載っていない小ネタですね。

 

これでも取得できていない場合はそもそも該当部分のHTML要素が取得できていない可能性があるので、元データになっているres.contetnやdriver.page_sourceをprintしてちゃんとほしい部分のHTMLタグが取得できているか確認しましょう。では~

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

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