ここではスクレイピングの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属性を指定すればよいのかを探すほうが、たいへんだったりします。(^_^;)
ソースを表示し、検索して、アタリをつけていくしかないです。
コメント