Python

【Python】スクレイピングの方法と注意事項について

こんにちは、まさかめです。

今回はpythonで行う処理の中でも人気の高いスクレイピングについて紹介していきます。

まさかめ
まさかめ
スクレイピングは副業案件とかでもよく見かけるね!

スクレイピングとは

スクレイピングとは、特定のWebサイト等の情報をプログラムを用いて抽出することです。

例えば、Aというネットショッピング系のサイトをスクレイピングし、各商品の名前と値段を抽出することができたりします。

競合サイトの調査や市場の相場を探ることができるため、昨今のデータを重視したマーケティング等において人気がある状態です。

スクレイピングの流れ

  1. 調査するサイトを決める
  2. 調査するサイトをクローリング
  3. クローリングした内容をスクレイピング
  4. スクレイピングした内容を保存

調査するサイトを決める

まずはどのサイトを対象にスクレイピングを行っていくかを決める必要がありますが、ここで非常に大切なこととして、対象サイトがスクレイピングを禁止しているかどうかを確認する必要があります。

調査するサイトをクローリング

サイトを決めたらクローリングを行います。

まさかめ
まさかめ
クローリングは、対象のサイトを読み取って大量のデータを持ってくる処理のことだよ!

クローリングした内容をスクレイピング

その後、クローリングした内容をスクレイピングしていきます。

まさかめ
まさかめ
スクレイピングは、膨大なデータから必要なデータだけを抽出することだよ!

スクレイピングした内容を保存

スクレイピングしたデータをそのままにしていても価値に変換できません。

Pythonで引き続き加工するのか、DBに保存していつでも参照できる状態にしておくのか等はありますが、どこかしらに保存しておくことが望ましいでしょう。

まさかめ
まさかめ
CSVファイルで保存しておいて、あとで読み込んで加工できるようにしとくとかね!

容量の大きくないデータならGoogleドライブに保存しておくとかもいいかも!

【Python】pydriveを用いて共有ドライブへのファイルアップロード方法こんにちはまさかめです。 今回はpydriveを用いてGoogleの共有ドライブへファイルをアップロードする方法について解説してい...

スクレイピングを行う上での注意点

スクレイピングを行う上で注意するべき点が大きく3点あります。

  1. 著作権の侵害
  2. 利用規約の侵害
  3. 対象サイトへの過剰なアクセス

以下のサイトが詳しく解説しているのでスクレイピングに興味のある方は一度確認しておいた方が良いでしょう。

https://topcourt-law.com/internet_security/scraping-illegal

Pythonでのスクレイピング実装

Pythonでスクレイピングを行うときは以下のライブラリがよく使われます。

  • Requests
  • Beautiful Soup
  • Selenium
  • Scrapy

今回はRequestsとBeautiful Soupを組み合わせてヤフーニュースの主要トピックスから、見出しとリンクを抽出していきましょう。

まさかめ
まさかめ
画像の赤枠で囲んだ部分だよ!

コード

import requests
from bs4 import BeautifulSoup
import re

url = 'https://news.yahoo.co.jp'
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
elems = soup.find_all("a")
elems = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
for elem in elems:
    print(elem.contents[0])
    print(elem.attrs['href'])

 

上記プログラムを実行した結果が以下となります。

実際のヤフーニュース上の見出しやリンクと一致しているので問題なくスクレイピングができてそうです。

まとめ

今回はPythonを用いてスクレイピングを実装してみました。

スクレイピングは便利な反面、使い方を誤ると違法となってしまうケースもありますので注意しながら行いましょう。

まさかめ
まさかめ
快適なスクレイピングライフを!