BETA

Python で Qrunch の記事のバックアップを取る

投稿日:2020-06-20
最終更新:2020-07-01

はじめに

Qrunch、良いですよね!!

  • Qiita だと、検索等々を汚してしまうのが気になって作業ログが書けない!
    • Qrunch なら、ログ機能により検索を汚染すること無く作業ログ記事が書ける!
  • はてなブログだと、誰の反応もなくて書いていて寂しい……。
    • Qrunch なら、コミュニティ機能も兼ね備えているので自分のブログを持ちつつ Qiita みたいな触れ合いがある!

ですが、個人開発によるサービスなので急にサポートが終了してしまわないか不安になります。
そんな自分のため、Qrunch の記事のバックアップを取ってくれるプログラムを書きました。
あと、Qrunch を始めたいけど同様の不安を抱えている人の参考になれば。

作ったもの

Qrunch にログインして、自分の今まで書いた記事をスクレイピングで落としてくれるプログラムを書きました。
自宅に Jupyter Notebook しか Python を動かす環境が無かったので、.ipynb 形式です。
GitHub: Qrunchの記事のバックアップを取る

ちなみに、ログイン機能ですが、自分が Twitter アカウントでログインしているので Twitter ログインにしか対応していません。
2020/06/22: Hatena のログインに対応しました。

ログイン部分のみ追加で実装していただければ流用できます。

使用ライブラリ

  • import requests as req
    • HTTP 通信のライブラリ。Web ページにアクセスして HTML を取得するのに利用。
  • from bs4 import BeautifulSoup
    • HTML のパーサー。requests で取ってきた HTML から必要なテキストを抽出するのに利用。
  • import re
    • 正規表現ライブラリ。BeautifulSoup で絞りきれなかった情報を更に絞るために利用。
  • import os
    • ディレクトリの作成等に利用。
  • from os import path
    • パスの結合や、exists に利用。
  • import time
    • sleep して、サーバーに負荷をかけない用。

簡単にスクレイピング知ったことまとめ

サイトにアクセスして HTML を取ってくる

# ログイン機能等を使ってセッションを持ちたい時  
session = req.Session()  

# ログインが不要なら  
res = requests.get()  

# サイトにアクセス  
res = session.get('URL')  

# HTMLが取れている  
print(res.text)  

HTML から特定の部分を取得

# パースをかける  
soup = BeautifulSoup(res.text, 'lxml')  

# <a> タグの要素を全て取得する  
# 尚、<a> ~~~ </a> のように、終了部分まで取ってきてくれます  
soup.find_all('a')  

特定のサイトの特定部分の要素を調べたい場合

chrome を利用すると便利でよい。
ページにアクセスして、右クリックの検証で HTML を見ることが出来る。
また、例えば文字などを反転させて検証を押せば、その付近を開くことが出来る。

お作法

  • 利用規約を読み、スクレイピング及び自動的な情報の収集が禁止されていないか確認しましょう。
    • スクレイピング行為は、場合によっては Qrunch の下記規約に違反する可能性があります。
      記事の取得は自分のものだけにしましょう。

      第5条 (禁止事項)
      5.本サービスのネットワークまたはシステム等に過度な負荷を掛ける行為
      6.本サービスの運営を妨害するおそれのある行為
      10.本サービスの他の利用者の情報の収集

  • 高速にページへのアクセスを繰り返すと、対象のサイトに負荷をかけてしまうことになります。
    sleep(1) などを入れて、負荷をかけないように注意しましょう。

おわりに

スクレイピングのプログラムを書くのは初めてだった事と、あまり Web の知識が無いため四苦八苦しました。
スクレイピングについては多少興味があったことと、Web 周りの知識も少しずつ付けていきたかったので勉強になり良かったです。

そして、これで心置きなくこれからも Qrunch が使えるぞ!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

気になった技術や、開発を楽にするテクニックなどについて書きます。 基本的に備忘録として記事を投稿します。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう