この記事では、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 スクレーパーの作成 では、このプロジェクトの核心に迫ります。新しいディレクトリを作成し、そこに Web スクレイパー プログラムのすべてのスクリプトを含むファイルを作成します。 次のコードをコピーして貼り付けます。 yc_web_page = response.text print(yc_web_page) # app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) 上記のコードは次のことを行います。 のインポート モジュール requests 応答変数を使用して、 機能は、提供された Web サイトのリンクから HTML ファイルをダウンロードします。 .get() でウェブページのコンテンツを読む .text コマンド python でこのコードを実行すると 出力はありません。これは、インポートされた 2 つのモジュールをインストールする必要があることを意味します。 app.py 次のコマンドを実行して、モジュールをインストールします。 pip install beautifulsoup4 pip3 install requests ソース コードの結果は次のようになります。 次は更新してみましょう 美しいスープを使用して残りのコードを含むファイル: app.py yc_web_page = response.text article_title = article_tag.get_text() result = { } print(result) # main.py import requests from bs4 import BeautifulSoup # add this response = requests.get( 'https://news.ycombinator.com/news' ) # add this soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() "title" : article_title, "link" : article_link, "point" : article_upvote 上記のコード スニペットに従って、次の操作を行います。 モジュール から BeautifulSoup 関数をインポートする bs4 次に、変数soupを使用して、 BeautifulSoup 関数を使用し、 HTMLファイルを取得するには yc_web_page html.parser コードの残りの部分に進む前に、次のリンクを使用して Web ブラウザーを開きましょう。 .get() 次に、ページを右クリックし、検査をクリックして、 ニュース ページの要素タブを表示します。 YCombinator Web ページは次のようになります。 Beautiful Soup を使用すると、ページ上の特定の要素をそのクラス名でターゲットにすることができます。 article_tag 変数を割り当てることにより、すべてのページ要素には、 要素の名前 タグ、および アンダースコア付き。これは、Web ページ上の要素のクラスが上書きされるのを防ぐために行われます。 find() 、 class_ ここで、リンク タイトルの 1 つを抽出します。 を使用して 関数 article_tag .get_text() 次に、のリンクを抽出します 属性の使用 とともに 関数 article_tag href .get() 同じことが 変数、タグ名、 、およびクラス名は、各記事リンクのポイントを抽出するために使用されます article_upvote <span> 抽出されたデータをキーと値のペアを持つディクショナリとして表示する変数結果を作成します 最終結果を印刷する スクリプト全体を記述すると、ページは YCombinator のニュース ホームページからデータをスクレイピングし、次のようになります。 結論 この記事では、Python Web スクレイパーを使用して Web ページからデータを抽出する方法を説明しました。 また、Web スクレイパーを使用する機能は、手作業よりも迅速に大規模なデータ セットを作成する際の時間と労力を節約できることです。 もっと詳しく知る 美しいスープのドキュメント 資料請求