【スクレイピング初心者向け】5分でできる!Qiita最新記事のタイトルを取得してみた!


最近pythonを使い始めたのですが、「pythonと言えばスクレイピングじゃね?」という謎の考えに囚われて、Udemyの講座を買ってしまいました。という訳で、簡単にスクレイピングしてみたのでメモ。

対象者

  • スクレイピングしたことない人
  • 前々から「スクレイピングってなによ!」と気になっていた人
  • HTML/CSSの基本を理解している人
  • for文等を使って簡単なプログラムを書くことができる人

スクレイピングとは?

Webサイトから、特定のデータを取得することを指します。
今回は、Qiitaのサイトから1日のトレンド記事のタイトルをスクレイピングしてみました。
https://qiita.com/

環境構築

pythonのインストール

以下のサイトからpythonをインストールしましょう。
https://www.python.org/downloads/

ターミナルで以下のコマンドを叩いて、pythonとpipがインストールされているか確認しましょう。

$ python -V
$ pip -V

seleniumのインストール

pythonでスクレイピングをする際にはBeautifulSoupかseleniumを使うことが多いみたいです。今回はseleniumをインストールして、スクレイピングを行なっていきます。

$ pip install selenium

さあスクレイピング!

スクレイピングの基本的な考え方は

1. どこのサイトの
2. どこの要素に
3. どのような処理をかけるのか

です。以下の完成コードをコメントとともに見ていきましょう。

qiita.py
# seleniumからwebdriverをimportする。
# webdriverを使って、ブラウザの操作をする。
from selenium import webdriver

# webdriverを使って、Google Chromeを開く。
browser = webdriver.Chrome()
# Qiitaのトップページにアクセスする。
browser.get('https://qiita.com/')

# Qiitaのトップページの中にある、classの名前が
# tr-Item_titleであるタグの情報を取得する。
items = browser.find_elements_by_class_name('tr-Item_title')

# 取得した複数の記事タイトルをfor文で展開する。
print('------') # 出力結果をわかりやすくするための記号列
for item in items:
    print(item.text) # item.textとすればタイトルを取ることができる。
    print('------') # 出力結果をわかりやすくするための記号列

# ブラウザを閉じる。
browser.close()

今回は、以下のようなことを行なっています。

1. https://qiita.com/
2. class名tr-Item_titleから
3. textの情報を取得する

ターミナル上で以下のように打ち込むと、1日のトレンド記事のタイトルを取得することができます。

$ python qiita.py

出力結果↓

もっとスクレイピングしていきたい

Qiitaの記事タイトルをスクレイピングしてみましたが、多分もっと有益に使うやり方があるはず。今回の勉強で基本は抑えた気がしてるので、次回何か思いついたらまたスクレイピングしてみたいと思います。