この記事は『CRESCO Advent Calendar 2020』 13日目の記事です。

 

はじめまして!
まりもです。

クレスコエンジニアブログ初投稿です!(皆様お手柔らかに…)
先に言い訳を並べますが、私は文学部を卒業し、現在営業職に就いています。
間違いなく他のブロガーの皆様よりもITには疎めなタイプの人間です…。

そんな私でも“楽をしたい!”の思いを胸に今回プログラミングにチャレンジしてみました!

私は情報収集のために定期的に色々なサイトをチェックしているのですが、
「複数のサイトを一通り確認したものの何も更新がなかった」
という日がちょこちょこあったりします。(激萎え)

 

そこで今回は、pythonを使って
サイトの更新有無を確認するソースを書いてみようと思います。
(ゆくゆくは更新情報をメール通知するツールを作りたい…!)

pythonには「スクレイピング*」が簡単にできるライブラリがあるので
私のような初心者でもチャレンジしやすいです!
*ウェブサイトから情報を抽出する技術

それでは早速、プログラミングスタート!

 

今回はクレスコエンジニアブログの更新有無を確認する仕組みを作ってみようと思います。

import requests
import bs4
url = 'https://www.cresco.co.jp/blog/' #クレスコエンジニアブログURL
diff_file_path = 'C:/xxxxx/xxxxx/test.txt' #更新日比較用テキストファイルパス

まずはウェブページの情報を取得するrequestsモジュールを使って、
エンジニアブログトップページの情報をダウンロードします。

res = requests.get(url)
res.raise_for_status() #エラーチェック

次にHTMLやXMLからデータを抽出することができるbs4(BeautifulSoup)モジュールを使って、
更新日データ*を抽出します。

soup = bs4.BeautifulSoup(res.text)
updateinfo = soup.find("li",attrs={"class","date updated"})
str_updateinfo = str(updateinfo)

*更新日データは事前にGoogle Chromeデベロッパー・ツール等を利用して
対象サイトの更新日データがどのclassにあるか等を確認する必要があります。

最後に、取得した更新日とテキストの内容を比較して更新有無を確認する

diff_file = open(diff_file_path)
past_updateinfo = diff_file.read()
if(str_updateinfo == past_updateinfo):
print("更新なし")
#更新日比較用テキストファイルに最新更新日データを書き込む
else:
diff_file = open(diff_file_path, 'w')
diff_file.writelines(str_updateinfo)
diff_file.close()
print("更新あり")

完成!!!
ちなみに、更新日情報が書き込まれたテキストファイルの内容はこんな感じ↓

<li class="date updated" datetime="2020-11-26T08:00:58+09:00" itemprop="datePublished"><i class="fa fa-clock-o"></i> 2020.11.26</li>

これで更新有無を確認する仕組みができました~♪やった!

 

今回は、pythonを使ってサイトの更新有無を確認するソースを書いてみました。
初心者の私でも何とか理解しながらプログラミングができたのも、
pythonの豊富で便利なライブラリのおかげだと思います。
今回書いたソースを超便利ツールに育てていけるように頑張ります。

ここまでお読みくださってありがとうございます。
アドベントカレンダーはまだまだ続きますので、次回もお楽しみください♪