Pythonでウェブサイトからデータを入手する(3)

python Python

ここではスクレイピングの2大ポイントー(1)requests、(2)Beautiful Soupの使い方の特訓をしてみます。

requests の使い方

requestsを使うとウェブページにアクセスすることができます。

書き方はこんな感じです。

import requests
url = "https://(URL)"
response = requests.get(url)
print(response.text)

1行目:requestsを使用するためにインポートします。
2行目:変数urlにアクセスするウェブサイトのURLを代入します。
3行目:変数responseに、変数urlに代入したURLにアクセス、取得した内容を代入します。
4行目:print関数で、変数responseの内容を表示します。

とってもシンプルですね。

Beautiful Soup の使い方

requestsを使うとアクセスしたウェブページの内容を「すべて」取得します。
そこで、必要な部分だけを取得するためにBeautiful Soupを使います。

import requests
from bs4 import BeautifulSoup
url = "https://(URL)"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
print(soup.find("h1").text)
print(soup.find(id = "id名").text)
print(soup.find(class_ = "class名").text)

1-2行目:requests・Beautiful Soupを使うためにインポートします。
3行目:変数urlにアクセスするウェブサイトのURLを代入します。
4行目:変数responseに、変数urlに代入したURLにアクセス、取得した内容を代入します。
5行目:変数soupに変数responseの内容=変数urlに代入したURLより取得した内容を解析します。
6-8行目:変数soupに代入した内容から、タグ、id属性、class属性の内容を取得します。

1-4行目はrequestsの使い方を参照して下さい。

5行目では、変数soupに、変数responseの内容(content)を解析(html.perser)した結果を代入します。
「perser」とは「パースする」=解析することを意味します。

ウェブサイトは、HTMLのタグやid属性・class属性などを使い、作成されています。
そこで、ウェブサイトからデータを入手するためには、HTMLのタグやid属性・class属性を指定すればOKです。(※)

6行目のコードで、h1タグのデータを入手することができます。
ウェブサイトの内容を解析した結果が代入されている変数soupから、h1タグの内容を探します。
そこで、プログラムは、soup.find(“h1”).text と記述します。
「.text」と付けることにより、HTMLのタグなどが外されたテキストだけの状態となります。

7行目→id属性のデータを入手することができます。
8行目→class属性のデータを入手することができます。
class属性を指定する場合は、class_ = “class名”となります。
Pythonの予約語に「class」があるため、そのまま使用することはできないので、末尾にアンダーバーを追加します。

というわけで、これだけでスクレイピングができます!
経験値かなりアップまちがいなしです。でもプログラムはとてもシンプル、分かりやすいですね。

(※)HTMLのタグ、id属性・class属性を知るためには、対象のページのソースを確認する必要があります。
Edge・Chromeでは、対象のページの上で右クリック→「ページのソースを表示」をクリックすれば、ソースを確認することができます。

実はプログラムを書くより、どのタグ、id属性・class属性を指定すればよいのかを探すほうが、たいへんだったりします。(^_^;)
ソースを表示し、検索して、アタリをつけていくしかないです。

コメント

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