PythonのスクレイピングでQiitaのトレンドを取得してみる

January 11, 2020

はじめに

以下の記事を参考にさせていただきました。

Python Web スクレイピング 実践入門 BeautifulSoup4 のチートシート(セレクターなど)

今回目標とするデータは Qiita のトップページに乗っているトレンドです。

スクリーンショット 2020-01-11 0.48.34.png

このように <div data-hyper-app='Trend' data-hyper-props='trendのjsonデータ'> と言う形でトレンドの JSON データが存在しているので、それの取得を目標にします。

実装

使うのは BeautifulSoup と呼ばれるライブラリです。

import urllib.request
from bs4 import BeautifulSoup
import json

QIITA_TOP_URL = 'https://qiita.com/'
def get_trend_items():
    req = urllib.request.Request(QIITA_TOP_URL)
    with urllib.request.urlopen(req) as res:
        body = res.read()
        soup = BeautifulSoup(body, "html.parser")
        target_div = soup.select('div[data-hyperapp-app="Trend"]')[0]
        trend_items = json.loads(target_div.get('data-hyperapp-props'))
    return trend_items

完成!

このエントリーをはてなブックマークに追加