BeautifulSoupでタグの探し方とか値の取得の仕方の基本

SIRIUSのサイトをWordPress化するためのツール作り、前の記事でも書いたけど肝はやっぱりBeautifulSoup。

わたしはBeautifulSoupをでタグを取得するのに使うのはXPath派。CSSセレクターはまだ使ったことがない。

それは以前に、まだPythonでスクレイプしてみようとする前に、Chromeの拡張機能でScraperっていうスクレイプツールを使ってページの中身を取り出していたの。

それって、取り出すところを指定するのにXPathで指定するから、それでXPathについては少し調べたことがあって馴染みがあった。

なので、find()やfind_all()を使ってます。

というのは前置きで、ここではBeautifulSoupから値を取得する方法についての備忘録。

BeautifulSoupから値を取得するには

本当はBeautifulSoupのリファレンスをキッチリ読んで理解するべきなんだろうけど、機能山盛りで大変そうなので、とりあえず必要そうな使いかただけ調べた結果。

find()やfind_all()でタグを検索するとき、例えばdivタグをidやclassで検索するなら引数もあるし難しくない。

でも、metaタグのkeywordsとかdescriptionを取得しようとして、少し悩んだわ。

というmetaタグのsoupオブジェクトをfind()で取得するのに、name引数は意味が違うみたいだし…。

正解は、

metakeyword = soup.find('meta', attrs={'name' : 'keywords'})

他にも書き方はあるみたいだけど、わたしはこうすることにした。

で、keywordsの値の取得はこう。

keyword = metakeyword['content']

あとtitleタグみたいに、

大見出し

とタグに挟まれている文字列(上では「大見出し」)を取得するならこう。

h1text = soup.find('h1').text

ただtitleタグみたいに、find()で検索しないで直接

title = soup.title.text

って指定で済むのもあるみたい。

とりあえず今のわたしに必要なのはこのくらい。
また使っていきながらメモしておいた方がいいことが見つかったら追加しよう。

コメント

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