Python~スクレイピング②~

こんにちは!ポテトヘッド(@potato_head0809)です!

f:id:potato_head0809:20210116013849p:plain


前回はスクレイピングの基本について触れました。

環境を構築してWebページの情報を取得しましたね。
potato-head0809.hatenablog.com


前回作成したフォルダは「scraping」として作りましたね。


そのフォルダの中に「web.py」というファイルを作りました。


今回も「web.py」を触っていきます。

$ cd scraping



今回は以下の内容に触れていこうと思います!!



「BeautifulSoupをインストール」


「BeautifulSoupの基本的な使い方」



では早速始めていきましょう!!

◯BeautifulSoupをインストール


まず、「requests」の時と同様にインストールをします。



ターミナルで以下のように書いてください!


Pythonのシェルではありません!

$ pip install BeautifulSoup4


これでインストールできているはずです。


では基本的な使い方を見ていきましょう!



◯BeautifulSoupの基本的な使い方

前回作った「web.py」は以下のような内容になっていると思います。

import requests

r = "https://www.yahoo.co.jp"

print(r.text)

今回はここにいろいろ加えていきます!!



目標は「ヤフー」からニュースのタイトルを取得して出力することです!




以下のように書き換えてください!

from bs4 import BeautifulSoup

import requests

r = requests.get("https://www.yahoo.co.jp")

soup = BeautifulSoup(r.text, 'html.parser')

title = soup.find_all('h1', class_="_3cl937Zpn1ce8mDKd5kp7u")

for titles in title:
    print(titles.text)


まずは一回今まで書いたものを消していただいて上記のコードをコピーして実行していただいて大丈夫です!!



これでタイトルを取得できたのではないでしょうか!笑


早かったですね...。


では詳細を説明していきます!

from bs4 import BeautifulSoup

import requests

上記のコードはライブラリをインポートしています!


このコードを書くことでインストールしたライブラリを使えるようになります!


r = requests.get("https://www.yahoo.co.jp")

上記のコードは前回説明しましたね。

このコードでWebページの情報を取得できます!


さて、前回はここで終わりましたが、ここからが本題です。

soup = BeautifulSoup(r.text, 'html.parser')

title = soup.find_all('h1', class_="_3cl937Zpn1ce8mDKd5kp7u")

上記のコードで「BeautifulSoup」を使用して解析を行っています。それを「soup」という変数に代入しています。

「html.parser」というのは、標準ライブラリでこれを指定することで解析の手伝いをしてくれます。

「html.parser」の他にも、「lxml」などもあるので調べてみてください!今回は「html.parser」を使用します。


その次にsoup変数に「find_all()メソッド」を使用して「h1」タグに絞って該当するものを取得しています。


タグを探す方法はこちらを参考にしてください!
potato-head0809.hatenablog.com




そしてその流れを「title」という変数に入れてあります。



ここで「find()」「find_all()」のメソッドについて説明します。



「find()」••• 引数で指定したタグを検索し、最初に一致したものを返す


「find_all()」••• 引数で指定したタグを検索し、一致したものすべてをリストで返します。


この2つが代表的なものになります。

ほかにもCSS Selectorというものもあるので興味のある方は調べてみてください!


for titles in title:
    print(titles.text)

そして最後にfor文を使ってタイトルを出力するところまで行っています。

for文について忘れてしまった方はこちらで確認してください!
https://potato-head0809.hatenablog.com/entry/2020/04/26/232416potato-head0809.hatenablog.com

さて、最後はファイルを実行するだけです!

$ python web.py

さぁ、どうでしょう。

◯まとめ


今回は以下の内容について触れました。



「BeautifulSoupをインストール」


「BeautifulSoupの基本的な使い方」

今回の内容を応用することで様々な情報を取得できるようになれば便利です。


今回は以上になります。お疲れ様でした!