Pythonコード集

【Python】スクレイピング で効率よく記事を読もう!その1

 

Cさん
毎日毎日、投資関連の記事が多すぎて... どれを読んでいいのかわかりません
FRB
それに、全部読んでいる時間もないしね

 

株式の投資をしていると、色んな記事が目に入ってきますよね。

もちろん、すべての記事に目を通すことは不可能です。

また、すべての記事が今のあなたにとって必要というわけでもありません。よってー

どの記事が自分にとって必要なのか

を見極めることは、時間を有効に使うことにつながりますし、投資の成否も左右します。

 

なので今回から3回にわたってー

Pythonを使って効率よく記事を取捨選択する方法

についてお話します。

 

この記事を読んでわかること

わかること

  • Pythonを使ってWeb上の情報を得る方法
  • Pythonで必要な情報のみを抽出する方法

 

この記事の対象となる人

こんな人におすすめ

  • プログラミング言語『Python』に興味がある人
  • Pythonを使って効率的に情報を得たい人
  • スクレイピングの基本を学びたい人

 

結論からいいます

  • Pythonを使えば効率的に情報を取捨選択することができる
  • 『スクレイピング』という手法を使えば記事のタイトル、リンク先、内容といった必要な情報だけをピックアップすることができる
  • 『スクレイピング 』を使えば情報収集に無駄な時間を使わなくてもよくなる

 

Pythonで情報を集めるなら『スクレイピング』

スクレイピングとは?

Pythonを使って、Web上にあるデータを取得する方法を『スクレイピング』といいます。

スクレイピングとはー

  • Web上にある情報を取得すること
  • 取得した情報をスプレッドシートやデータベースに格納したり編集したりすること

 

スクレイピングを使えば、WEB上に存在しているあらゆる情報を取得することができます。

しかし注意すべきこともあります。

それが以下の2つです。

スクレイピングを学ぶ前に、しっかりと以下の点については覚えておいてください。

注意すべきこと

  • Webサイトによってはアクセスを制限していることがある
  • アクセスの頻度によっては違法な攻撃として法的に処罰されてしまう可能性がある

 

情報の取捨選択を決める要素とは?

スクレイピングを使えば、Web上にある色々な情報が取得できます。

しかし、そのすべてが必要というわけではありあせん。

このため、『情報の取捨選択』を常に意識しておくことが重要です。

 

情報の取捨選択としてキーとなる要素は以下の2つです。

取捨選択の要素

  • タイトルと内容(最初の1〜2行)
  • 要約された文章

 

『タイトル』は、情報の取捨選択で最も重要な箇所となります。

 

ニュースサイトには、いろんなタイトルの記事が載っています。

それをひとつひとつクリックして内容を確認するのは、時間がかかります。

しかし、Pythonのスクレイピング を使えば、取得した記事のタイトルと内容がJupyter上で表示されます。

このため、タイトルと最初の1〜2行をザっと読むだけで『必要な情報が載っているかどうか?』を素早く判断できます。

 

また、Pythonのスクレイピング では、記事の内容を『要約』することもできます。

これは良い記事なんだけど...長い!

ということはよくあります。

こんな時は、Pythonで記事を要約して、効率よく必要な情報をピックアップすると良いでしょう。

 

しかし、要約についてはひとつ注意点があります。

それはー

注意点

日本語ではうまく機能しない

ということです。

このたね、要約で記事の内容をチェックするときは、英語の記事がメインとなります。

 

今回は最初のキーとなる要素、複数の記事のタイトルと内容をPythonで一気に取得する方法について解説します。

 

実践!Pythonでスクレイピング

ブルームバーグから10記事を取得してみよう!

このブログは、米国株の投資をメインのコンテンツとしています。

なので今回は、米大手の経済メディア『ブルームバーグ』から記事の情報をスクレイピング してみます。

なお、最新の情報やよく読まれる記事は、だいたいトップページで配信されています。

よって、ブルームバーグのトップページにある10記事(ブログ執筆時点)の情報を取得してみます。

 

まずはPythonのコードから。

Pythonのコード例

import newspaper

url = 'https://www.bloomberg.co.jp/'

website = newspaper.build(url,memoize_articles = False)


i = 1

for article in website.articles:
    article.download()
    article.parse()
    article.nlp()
    
    print("記事",str(i), ':',article.title)
    print(article.url)
    print(article.summary, end='\n\n')
    
    if i  > 9:
        break
        
    i = i +1

 

上のコードを実行すると以下のような結果が表示されます。

実行の結果

 

書いたコードは、たったの20行足らず

それだけで、ブルームバーグのトップページに掲載されている10記事の情報をたったの数秒で取得できました。

 

次にコードについての説明です。

コードの説明

今回のスクレイピング で取得した内容は、以下の3つです。

取得した内容

  • タイトル
  • リンク先
  • 内容

 

コードの詳細です。

1:記事のデータを読み込むためのライブラリには『newspaper3k』を使います

import newspaper

 

なお、newspaper3kはインストールが必要です。

  • pipを利用してインストールする場合は、以下のコマンドを入力

pip install newspaper3k

  • condaを利用してインストールする場合は、以下のコマンドを入力

conda install -c conda-forge newspaper3k


2:次に情報を取得するサイトのURL指定します
ここではブルームバーグのトップページのURLを変数『url』に入れます

url = 'https://www.bloomberg.co.jp/'


3:for文を使って、取得した情報をひとつひとつ『ダウンロード→解析→表示』という順で実行していきます

また、取得した記事に番号を割り振って、本当に10記事の情報が取得されているのか?も確認します

#最初の記事に番号を割り振る
i = 1


#for文で記事の情報をひとつひとつ取得する
for article in website.articles:

  #記事データをダウンロード
    article.download()

    #記事データを解析
    article.parse()

    #自然言語処理をする
    article.nlp()

    

    #記事、記事番号、タイトルの順で表示
    print("記事",str(i), ':',article.title)

    #記事のURLを表示
    print(article.url)

    #記事の内容を表示
    print(article.summary, end='\n\n')
    
  
  #10記事を取得したらスクレイピングを止める
    if i  > 10:
        break
     
  #記事をひとつ取得するごとに記事番号を1ずつ加算していく
    i = i +1

上の結果(画像)を見ればわかるとおり、タイトル、リンク先そして内容がJupyter上にまとまって表示されていることがわかります。

なので、タイトルと最初の1〜2行をサッと確認するだけで『この記事には自分が必要している情報が載っている!』と当たりをつけることができます。

当たりをつけることができれば、色んなニュースサイトのリンク先をひとつひとつクリックして内容を読んで、また別のニュースサイトのリンク先をひとつひとつクリックして...なんてことする必要はなくなります。

 

スクレイピング は奥が深い

Pythonには色々なスクレイピング 用のライブラリがある

今回は『newspaper3k』というライブラリを使って、ブルームバーグのトップページに掲載されている記事のタイトル、URL、内容の各データを取得しました。

しかし、Pythonでよく使われるスクレイピング 用のライブラリはnewspaper3kだけではありません。

他のライブラリ

  • requests
  • BeautifulSoup
  • Selenium

通常の分析業務では(少なくともジェイの職場では)、newspaper3kよりも上の3つのライブラリを使う機会が多いです。

これら3つのライブラリには、それぞれ特徴があります。

それゆえ、サイトの構成や目的に応じて上のライブラリを使い分けるスキルが必要となってきます。

スクレイピング は奥が深い分野です

今回はnewspaper3kにフォーカスした内容でしたが、このブログでは実践の形式で上3つのライブラリを使ったスクレイピング についても解説していきます。

乞うご期待!

 

まとめ

まとめ

  • Pythonを使えばWeb上の情報を簡単に取得できる
  • 『スクレイピング 』を使えば情報の取捨選択ができる
  • 必要な記事だけを読みたいなら『newspaper3k』を活用しよう

今回は、記事データの取得にフォーカスしました。

次回は、記事を要約して効率よく情報を収集する方法について解説します。


注記事項

ジェイの米国株投資ブログ(以下当サイト)に掲載されている記事は、投資の助言を目的としたものではありません。当サイトに掲載されたコンテンツの正確性については、可能な限り注意を払っています。しかし、意図せず誤情報が紛れ込む可能性や情報そのものが古くなっている可能性があり、その正確性を完全に保証するものではありません。
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください

 

最後に

Pythonを学びたい方へ

今やPythonは、マーケットの分析に限らず、あらゆる分野で使われているプログラミング言語です。

Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。

『私もPythonを学んでみたい!』

という人は以下のリンク先をご覧ください。

プログラミングを学ぼう

 

なぜプログラミングを学ぶ必要があるのか?その理由がわかります。

そして『これがPythonを効率的に学ぶ方法だ!』と、ジェイが自信をもっておすすする効率的な学習方法もわかります。

この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!

 

-Pythonコード集