Pythonを使ったYahoo!ニュースの自動収集とExcelへの保存方法

記事
IT・テクノロジー
Pythonを使ったWebスクレイピングの一例として、Yahoo!ニュースからビジネスカテゴリーのニュースを取得し、Excelファイルに保存する方法を紹介します。

手順


1. 必要なライブラリのインストール
本コードで使用するライブラリとして、requestsとbeautifulsoup4が必要です。pipを使って以下のコマンドでインストールします。
スクリーンショット 2023-03-14 080304.png


2. Excelファイルの準備
Excelファイルを作成し、1行目にDate、Title、Linkのヘッダーを挿入しておきます。また、ファイル名をyahoo_news.xlsxとして保存しておきます。

3. ニュースの取得とExcelへの書き込み
以下のコードを実行することで、Yahoo!ニュースのビジネスカテゴリーから最新のニュースを取得し、Excelファイルに書き込みます。

3.1ニュースの取得
ニュースの取得には、PythonのrequestsライブラリとBeautifulSoupライブラリを使用します。具体的には、requestsライブラリで対象とするウェブページにHTTPリクエストを送り、レスポンスを取得します。そして、BeautifulSoupライブラリを使用して、HTMLページからニュース記事のタイトルやリンク、日付などの要素を抽出します。この例では、以下のコードでニュースデータを取得しています。

スクリーンショット 2023-03-14 080440.png

このコードでは、Yahoo!ニュースのビジネスカテゴリのページから、記事のタイトル、リンク、日付を取得しています。soup.find_all()メソッドで、HTMLコード中で指定したclass属性を持つ要素を抽出します。抽出したニュースデータを、for文を使って1つ1つ処理し、Excelファイルに書き込みます。

Excelへの書き込み

Pythonのopenpyxlライブラリを使用して、Excelファイルにデータを書き込みます。Excelファイルを開いて、最終行の位置を取得します。次に、for文を使ってニュースデータを1つ1つ処理し、最終行に追記していく形で、データをExcelファイルに書き込みます。以下が、ニュースデータをExcelファイルに書き込むためのコードです。

スクリーンショット 2023-03-14 080534.png

このコードでは、Excelファイルを開いて、最終行の位置を取得し、それ以降の行にニュースの情報を書き込む処理が行われています。

具体的には、まずopenpyxlモジュールを使用して、Excelファイルを開いています。例外処理を行うことで、ファイルが存在しない場合は新しいExcelファイルを作成します。
その後、active属性を使ってワークシートオブジェクトを取得し、max_row属性を使用して、既にExcelファイルに書き込まれているデータの最終行を取得しています。
その後、requestsとBeautifulSoupモジュールを使用して、Yahooニュースのビジネスカテゴリページからニュースの情報を取得しています。取得した情報は、タイトル、リンク、および現在の日付として変数に格納されます。
最後に、openpyxlを使用して、Excelファイルの最終行以降の行に取得した情報を書き込んでいます。具体的には、cellメソッドを使用して、各行のセルに値を書き込んでいます。
最後に、wb.saveメソッドを使用して、Excelファイルを保存し、ファイル名には現在の日付が付け加えられます。このようにして、定期的にYahooニュースから最新情報を取得し、Excelファイルに書き込むことができます。

最後に全体のソースコードを公開します。皆さんもぜひ、使ってみてください。

スクリーンショット 2023-03-14 080741.png

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す