pythonでスクレイピングをやってみる(実践練習)

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

・スクレイピングとは
・pythonによるスクレイピングのやり方
・seleniumを使ったスクレイピングのやり方

この記事は、実際にwebスクレイピングを手を動かしながら覚えたいという方向けに書いているので、理論のところの説明は省きいきなり実践方法を説明するようにしました。
今回実践練習として行う例題は、googleで任意のワードを検索してその検索結果から上位10記事のURLを取得する方法です。

※webスクレイピングとは?
webスクレイピングとは、ウェブサイトから任意の情報のみを取得するプログラミング技術のこと

注 … サイトやプラットフォームによっては、スクレイピングが禁止されているところがあるため注意すること

用意するパッケージ

まずは以下のパッケージを用意しましょう

・selenium … webスクレイピングするためのパッケージ
・time … プログラミング中に時間の操作などをするためのパッケージ

スクレイピングをするためのパッケージはseleniumの他に、requestsとBeautifulsoupを組み合わせた方法がありますが、今回はseleniumを使った方法を記載していきます。
スクレイピングは以下の手順で進めてください。

スクレイピングの流れ

① ターミナルで環境構築
② 必要なパッケージのインストール
③ Google Chromeドライバーの立ち上げ
④ 任意のワードを入力し検索
⑤ 検索結果から上位10記事のURLを取得

1つずつ見ていきましょう。

① ターミナルで環境構築

$ pip install selenium
$ pip install chromedriver-binary

まずはpythonでseleniumを使う上で、事前に必要な環境構築が必要なのでターミナルで上のコードを実行します。

② 必要なパッケージのインストール

# 必要なパッケージのインポート
from selenium import webdriver
import time

今回はスクレイピングに必要なseleniumとプログラムの実行中に、前のプログラムが完了するまでに次のプログラムが実行されるのを防ぐために時間を操作するパッケージをインストールします。

③ Google Chromeドライバーの立ち上げ

# Google Chromeドライバーの立ち上げ、Googleを開く
browser=webdriver.Chrome()
browser.get("https://www.google.com/")

上のコードを実行すると上記のようにGoogle Chromeが立ち上がり、Googleが開かれます。

任意のワードを入力し検索

# 検索欄に任意の文字を入力
search = browser.find_element_by_name("q")
search.send_keys("天気の子 感想")

# 入力が完了する前に検索ボタンを押してしまうとエラーが生じるため時間を置かせる
time.sleep(3)

# 検索ボタンをクリック
button = browser.find_element_by_class_name("gNO89b")
button.click()

次はGoogleの検索欄に任意のワードを入力(”天気の子 感想”)し、検索ボタンをクリックするコードを実行します。
すると下のようになります。

⑤ 検索結果から上位10記事のURLを取得

# 検索結果から各URLのスクレイピング
log = browser.find_elements_by_class_name("r")
for scrapy in log:
  result = scrapy.find_element_by_tag_name("a")
  url = result.get_attribute("href")
  print(url)

検索結果の上位10記事のURLを取得します。

出力結果

https://filmarks.com/movies/82210
https://eiga.com/movie/90444/review/
https://twitter.com/hashtag/%E5%A4%A9%E6%B0%97%E3%81%AE%E5%AD%90%E6%84%9F%E6%83%B3
https://cinemarche.net/anime/tenkinoko-shikamimi/
https://oharadesu.com/whethering-with-you
https://coco.to/movie/87205
https://ciatr.jp/topics/311482
https://youpouch.com/2019/07/25/587548/
https://movies.yahoo.co.jp/movie/366483/

まとめ

以上がpythonによるwebスクレイピングの実践練習です。
このスクレイピングを応用すれば、全東証一部上場企業の過去10年分の株価変動データのような膨大な量のデータを効率よく取得できます。
次回はそのように取得したデータをcsvファイルにまとめる方法やBeautifulsoupを使ったスクレイピング方法を書いていこうと思います。

ぜひみなさんのwebスクレイピングライフを応援しています!

今回使用したコード

# 必要なパッケージのインポート
from selenium import webdriver
import time

# Google Chromeドライバーの立ち上げ
browser=webdriver.Chrome()

# googleの立ち上げ
browser.get("https://www.google.com/")

# 検索欄に任意の文字を入力
search = browser.find_element_by_name("q")
search.send_keys("天気の子 感想")

# 入力が完了する前に検索ボタンを押してしまうとエラーが生じるため時間を置かせる
time.sleep(3)

# 検索ボタンをクリック
button = browser.find_element_by_class_name("gNO89b")
button.click()

# 検索結果から各URLのスクレイピング
log = browser.find_elements_by_class_name("r")
for scrapy in log:
# attributeの中からhrefを抽出して出力
result = scrapy.find_element_by_tag_name("a")
url = result.get_attribute("href")
print(url)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA