python備忘録#2 スクレイピング(CSSセレクタまとめ)
スクレイピングで対象サイトまで到達して、「よし、HTMLからデータを抽出しよう!」と思ったときにタグの呼び出し方が分からない、、、
基本的な宣言の型と注意事項を備忘録としてまとめておきます。
findメソッドとselectメソッドの違い
#宣言と一致するタグを全て呼び出したい時
#findメソッドの場合
soup.find_all()
#selectメソッドの場合
soup.select()
#宣言と一致するタグの最初のひとつだけ呼び出したい時
#findメソッドの場合
soup.find()
#selectメソッドの場合
soup.select_one()
自分が何を呼び出したいのかによってメソッドを変える必要があるので注意しましょう。
クラスの指定
呼び出したいタグは以下
[.findメソッドの場合]
soup.find(class_="data")
#もしくは
soup.find("p",class_="data")
#[p]タグのクラス名[data]という意味です
※_(アンダーバー)が必要なことに注意してください
[.selectメソッドの場合]
soup.select_one(".data")
#もしくは
soup.select_one("p.data")
#[p]タグのクラス名[data]という意味です
もし、クラス名にスペースが入っている場合は.(ドット)でつなぎましょう
soup.select_one(".categoryName.nikon")
※「.categoryName nikon」のようにスペースをいれて検索しないように注意しましょう。
idの指定
呼び出したいタグは以下
[.findメソッドの場合]
soup.find(id="content")
[.selectメソッドの場合]
soup.select_one("#content")
子セレクタの指定
呼び出したいタグは以下
[.findメソッドの場合]
soup.find("h2").find("a")
[.selectメソッドの場合]
soup.select_one('h2 > a')
※>の前後は半角スペースであることに注意してください。
タグの要素を取得する
テキストを取得したい場合
soup.select_one("p.data").text
リンクのURLを取得したい場合
soup.select_one('a').get('href')
簡単ではありますが、基本的な宣言方法は以上です。
・検索したいタグ、要素がどの階層内にあるのか
・クラス名、ID名がどのように定義されているのか
注意しながらコードを作成しましょう。
printメソッドを使いながらどのように要素が取得されているのか確認しながら作成するとスムーズだと思います。
HTMLの知見が少ないと慣れるまで苦労すると思いますが、簡単な宣言から始めていきましょう。
この記事が気に入ったらサポートをしてみませんか?