この記事では、Python スクリプトを使用して Web サイトからデータをスクレイピングまたはグラブできるプログラムを作成します。このデータ収集方法は、Web スクレイピングと呼ばれます。
Webスクレイピングとは、Pythonまたはその他のプログラミング言語をプログラムで使用して、Webページからデータをダウンロード、クリーニング、および使用することです。ほとんどの Web サイトは、データのスクレイピングを望んでいません。スクレイピングが合法で許可されているものを確認するために、ウェブサイトには、許可されているエンドポイントの詳細を示す専用ページがあります。
リンクの最後に robots.txt を添付して、許可されているエンドポイントを確認します。たとえば、 https://news.ycombinator.com/robots.txtを使用してみましょう。
以下のテキスト ファイルを使用すると、結果は次のようになります。
スクリーンショットには、YCombinator Web サイトからのスクレイピングが許可されているエンドポイントと許可されていないエンドポイントが示されています。クロールの遅延とは、プログラムを使用して Web サイトからデータをスクレイピングするときに一時停止することを意味します。これにより、絶え間ないスクレイピングのためにサーバーに過負荷がかかり、Web サイトの速度が低下することはありません。
この演習では、ニュース コンテンツのホームページをスクレイピングします。これは、ユーザー エージェントに従って実行できます。
Python Web スクレイパーには、データをスクレイピングするために必要な 2 つのモジュールが必要です。
Beautiful Soup は、HTML ファイルからデータを抽出するための Python ライブラリです。パーサーを使用してファイルを変更し、データを貴重なドキュメントに変換し、プログラマーの手動および反復作業の時間を節約します。
requests HTTP ライブラリは、Web サイトへのリンクを使用して HTML ファイルをダウンロードするためのものです。
.get()
関数。では、このプロジェクトの核心に迫ります。新しいディレクトリを作成し、そこに Web スクレイパー プログラムのすべてのスクリプトを含むファイルを作成します。
次のコードをコピーして貼り付けます。
# app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text print(yc_web_page)
上記のコードは次のことを行います。
requests
モジュール .get()
機能は、提供された Web サイトのリンクから HTML ファイルをダウンロードします。.text
コマンド python でこのコードを実行すると
app.py
出力はありません。これは、インポートされた 2 つのモジュールをインストールする必要があることを意味します。次のコマンドを実行して、モジュールをインストールします。
pip3 install requests pip install beautifulsoup4
ソース コードの結果は次のようになります。
次は更新してみましょう
app.py
美しいスープを使用して残りのコードを含むファイル: # main.py import requests from bs4 import BeautifulSoup # add this
response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text # add this
soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_title = article_tag.get_text() article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() result = { "title" : article_title, "link" : article_link, "point" : article_upvote } print(result)
上記のコード スニペットに従って、次の操作を行います。
yc_web_page
BeautifulSoup 関数を使用し、 html.parser
HTMLファイルを取得するにはコードの残りの部分に進む前に、次のリンクを使用して Web ブラウザーを開きましょう。
.get()
次に、ページを右クリックし、検査をクリックして、 YCombinatorニュース ページの要素タブを表示します。
Web ページは次のようになります。
Beautiful Soup を使用すると、ページ上の特定の要素をそのクラス名でターゲットにすることができます。
find()
要素の名前、タグ、およびclass_
アンダースコア付き。これは、Web ページ上の要素のクラスが上書きされるのを防ぐために行われます。 article_tag
を使用して.get_text()
関数article_tag
属性の使用href
とともに.get()
関数article_upvote
変数、タグ名、 <span>
、およびクラス名は、各記事リンクのポイントを抽出するために使用されますスクリプト全体を記述すると、ページは YCombinator のニュース ホームページからデータをスクレイピングし、次のようになります。
この記事では、Python Web スクレイパーを使用して Web ページからデータを抽出する方法を説明しました。
また、Web スクレイパーを使用する機能は、手作業よりも迅速に大規模なデータ セットを作成する際の時間と労力を節約できることです。