PR

pythonでwebページをスクレイピングしてみる

python初心者がどういう段取りでwebページをスクレイピングできるようになるかまとめた記録です。

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

pythonインストール

python公式からpythonインストーラをダウンロードする。バージョンはとりあえず最新でOKかと。

Welcome to Python.org
The official home of the Python Programming Language

インストーラ起動して、パソコンにインストールする。

このとき、”Add Python xx to PATH“のチェックをする必要がある。

インストールできたか確認

コマンドプロンプトを開いて、

python --version

と入力する。問題なくインストールできていればバージョン情報が返ってくる。

もしpythonと返ってきた場合は、インストール失敗しているので、インストーラから一度pythonをアンインストールして再度インストールすること。

pythonプログラムの作成

メモ帳で

print("aaa")

と入力して、保存する。

保存するとき、ファイルの種類をすべてのファイルにして、ファイル名はtest.pyとする(.pyで拡張子指定するのが大事!)。

ファイルはデスクトップに置いておくとする。

コマンドプロンプトを開くと、ユーザー名のフォルダが起点となっているため、下記コマンドでデスクトップ参照にする。

cd ./desktop

cdはカレントディレクトリの略だったかな、./は現在地を示していて、cd ./desktopだと現在地にあるdesktopフォルダに移動、という意味になる。

これでデスクトップに移ったので、さっき作ったpythonファイルを実行する。

python test.py

pythonがpythonを実行しますという意味で、実行ファイル(=test.py)を指定している。

すると、aaaと返ってくるはず。返ってくれば成功、返ってこなければ何かおかしい。本記事の先頭からやり直すことをオススメする。

とりあえずここまでできれば、pythonを実行できる環境作りはできた!

スクレイピングする

ネット上で落ちてるコードをコピペして(=sample.pyの中身を書き換えて)、とりあえず自分のサイトをスクレイピングしてみる。

import requests

TARGET_URL = "https://tatepro.com" # スクレイピングしたいURLをここに書く


html = requests.get(TARGET_URL)  # HTMLを取ってくる

print(html)

実行すると、ModuleNotFoundError: No module named ‘requests’とのエラーが出ました。

スクレイピングするにはrequestsライブラリを使わないといけないらしいですが、pythonには標準で含まれてません。なので、まずrequestsライブラリを入れます。

コマンドプロンプトで下記実行

pip install requests

Successfully installed~~~とか出れば問題ないかと。あとバージョン最新にしろ、とかnoticeで言われてますが、これも無視。

再度実行すると、<Response[200]>と出ました、成功ですよね。数字をステータスコードと言って、200=成功というのは知ってますよ。

でも、ほしいのはステータスコードではなく、ページを構成するHTMLです。

BeautifulSoupインストール

そこで必要になるのがBeautifulSoupというHTML抽出ライブラリで、これがすこぶる便利らしい。

まずはBeautifulSoupのインストール。

pip install BeautifulSoup4

さくっと終わります、そしてコードを下記のように変更。

import requests

from bs4 import BeautifulSoup
TARGET_URL = "https://tatepro.com" # スクレイピングしたいURLをここに書く

html = requests.get(TARGET_URL)
soup = BeautifulSoup(html.content, "html.parser")
title = soup.find("title")

print(title)

これを動かすと、<title>立科プログラミング</title>と出てきました…タイトル取り出せた!

ここらでちょっとコードを見ときます。

requests.getで指定したURLのHTMLを読み取って、htmlに格納。
BeautifulSoupでhtmlのテキスト情報をHTML情報形式に変換してんのかな?(これは分からん
で、titleタグを探して中身をtitleに格納する、と。

idやクラスを抽出する

タグでなく、idやクラスの情報を抜くにはどうすればよいか。

findでid=””やclass=””とすればよいらしい。

試しにサイト内にnewsというidを振ってみて、これが抜けるか見てみる。

import requests

from bs4 import BeautifulSoup
TARGET_URL = "https://tatepro.com" # スクレイピングしたいURLをここに書く

html = requests.get(TARGET_URL)
soup = BeautifulSoup(html.content, "html.parser")
id_news = soup.find(id="news")

print(id_news)

divにid振ったからか、div内の全てが返ってきた。ふんふん、だんだんわかってきた。

とりあえず機械学習するための元データ収集がしたいので、抜き方がだいたい分かった現時点でいったん次行きます。

まとめ

requestsライブラリでHTML取得、BeautifulsoupでタグやID,クラスによって指定した情報を抜き取れる

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
python
シェアしていただけると嬉しいです!

コメント

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