商品サンプル画像
ポケモンカードゲーム MEGA プレミアムトレーナーボックス MEGA
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
スッキリわかるJava入門 第3版 (スッキリわかる入門シリーズ)
商品ページ
Amazon
収益広告(手動登録)
商品サンプル画像
タカラトミー(TAKARA TOMY) ポケットモンスター 超連動!ポケモン テラスタルオーブRV (ライジングボルテッカーズ)
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
アシュリー、魔法はよいこになってから!(全3巻)
商品ページ
Amazon
非収益広告(手動登録)
商品サンプル画像
バンダイ(BANDAI) ONE PIECEカードゲーム 受け継がれる意志【OP-13】 (BOX)24パック入り
商品ページ
Amazon
収益広告(自動登録)
記事の概要
Pythonを使ってinoreaderでサイトの更新情報を取得してみた
作成日:2021-10-31
最終更新日:2021-10-31
記事の文字数:4415
情報技術情報技術-WebAPIWebサイト作成
Pythonを使ってinoreaderでサイトの更新情報を取得してみた
inoreader(イノリーダー?)が公開しているWeb APIを使用して、Pythonで自動的にサイトの更新情報を取得できるようにした。
ので実際のPythonコードを交えてそのやり方のメモをここに残します。
ちなみにコードを書くのは上手くないのでクオリティには目をつぶってください。
前提
  • inoreaderは無料サービスを使用する(無料で十分使えそうだったため)
ざっくりとした流れ
大体の作業の流れは以下の通りです。 このうちpythonで自動化するのは「5~6」デス。
  1. inoreaderにサービス登録する
  2. inoreaderに更新をウォッチしたいサイトを登録する
  3. inoreaderで接続用アプリケーションを登録する
  4. inoreaderでトークンを発行する(GoogleDevelopers使用)
  5. 【python】サイトの更新情報を取得する
  6. 【python】取得した情報をテキストファイルに保存する
実作業
1.inoreaderにサービス登録する
まず最初に、当然ですがinoreaderでアカウントを登録する必要があります。
以下のURLからアカウントを作成しましょう。
アカウント作成ページ
2.inoreaderに更新をウォッチしたいサイトを登録する
inoreaderでアカウントを登録したら、最初に更新をウォッチしたいサイトを登録する必要があります。
以下の画像の場所から登録できます。
画像クリックで等倍
そしてここで更に登録したサイトをフォルダにまとめておきましょう。
後でpythonで更新情報を取得するときに、フォルダ単位で取得できます。
フォルダの作成方法はフィードと同じです。
画像クリックで等倍
3.inoreaderで接続用アプリケーションを登録する
inoreaderではFeedlyと違って無料版でもきちんとしたOAuthが使えるようです。
その前段としてinoreader上であらかじめ接続用アプリケーションを作成しておく必要があります。
やり方は以下画像を参考にしてください。
「クライアントシークレット」(App Key)は所謂パスワードのようなもので秘匿性が高いので他の人に教えないようにしましょう。
ただ、のちの工程で必要なので、「クライアントID」と「クライアントシークレット」はメモっておいてください。
ここで間違えそうなところは、リダイレクトURIは特に入れなくてもいいというところです。
画像クリックで等倍
画像クリックで等倍
4.inoreaderでトークンを発行する(GoogleDevelopers使用)
前述の通りFeedlyと違い、無料版でもアクセストークンの使用方法がきちんとした奴です。
まず最初にアクセストークンとリフレッシュトークンを発行しないといけないのですが、ここをpythonで作るとめんどくさいはずで、なおかつ一回しかやらない手順なので、公式がデモのやり方を紹介しているそれに相乗りしました。
以下URLの手順に従い、トークンを発行してください。
「Google OAuth 2.0 Playground」というセクションのところに手順が書いてあります。
アクセストークン発行手順
最後までやるとアクセストークンとリフレッシュトークンが画面に表示されるので、それをメモっておいてください。
5.【python】サイトの更新情報を取得する
ここからpythonコードになります。どうでもいいところは中略です。
# パッケージの読み込み import requests ~~~中略~~~ #------------------------------------------------------------------- # コンテンツ取得 def getArticle(streamId): # 戻り値を指定 ret = "" try: # コンテンツ取得API実行 res = callAPI(streamId) # ステータスコードが403の場合、アクセストークンを更新し、もう一度コンテンツを取得する if res.status_code == 403: #アクセストークンを更新 refleshToken() # コンテンツ取得API実行 res = callAPI(streamId) # html文を作成 js = res.json() for article in js["items"]: # ここで見たい情報をまとめる ret += article["title"] except: CommonFunction.updFileContent(trgtFolder + "エラー.txt", "ステータスコード:" + str(res.status_code)) return ret # コンテンツ取得API実行 def callAPI(streamId): # アクセストークンを取得 accessToken = CommonFunction.getFileContent(trgtFolder + "AccessToken.txt") # API利用に必要な情報を格納 url = "https://www.inoreader.com/reader/api/0/stream/contents/" + streamId + "?n=" + artNum reqHeader = { "Content-Type":"application/x-www-form-urlencoded", "Authorization":"Bearer " + accessToken } # コンテンツ取得APIを実行 res = requests.get(url, headers=reqHeader) return res # アクセストークンを更新 def refleshToken(): # リフレッシュトークンを取得 refToken = CommonFunction.getFileContent(trgtFolder + "RefleshToken.txt") # API利用に必要な情報を格納 url = "https://www.inoreader.com/oauth2/token" reqHeader = { "Content-Type":"application/x-www-form-urlencoded" } reqParam = { "client_id":"**********", "client_secret":CommonFunction.getFileContent(trgtFolder + "ClientSecret.txt"), "grant_type":"refresh_token", "refresh_token":refToken } # トークンリフレッシュAPIを実行 res = requests.post(url, headers=reqHeader, data=reqParam) CommonFunction.updFileContent(trgtFolder + "RefleshTokenBK.txt", res.json()) # 念のためリフレッシュした時のレスポンスを全部保存 # アクセストークンをファイルに保存 CommonFunction.updFileContent(trgtFolder + "AccessToken.txt", res.json()["access_token"]) # リフレッシュトークンをファイルに保存 CommonFunction.updFileContent(trgtFolder + "RefleshToken.txt", res.json()["refresh_token"]) #-------------------------------------------------------------------
メソッドが3つあります。
記事を取得する流れを記載した「getArticle(streamId)」。
記事本体を取得するための「callAPI(streamId)」。
アクセストークンが期限切れになったときにトークンをリフレッシュする「refleshToken()」。

処理の大まかな流れは、
・まず、「getArticle(streamId)」が呼ばれ、
・その中で「callAPI(streamId)」が呼ばれ、
・その結果ステータスコードが「403」となった場合(これがアクセストークンの有効期限切れを表します)、「refleshToken()」が呼ばれ、もう一度「callAPI(streamId)」が呼ばれ、という流れです。

ちなみに前提として、クライアントシークレットとアクセストークンとリフレッシュトークンは別途それぞれ「ClientSecret.txt」「AccessToken.txt」「RefleshToken.txt」というファイルに保存してあります。
クライアントIDだけコードに直書きしてますが、これは書き換えることもないしそんなに秘匿性が高い情報ではないので直接書いてます。

ここのコードについては、ステータスコード403時の特殊な動きを除けば、あと気になるのは「StreamId」かと思います。
これについては次に説明します。
6.【python】取得した情報をテキストファイルに保存する
以下のように取得した記事の更新情報をテキストファイルに保存しています。
「CommonFunction.updFileContent」メソッドは単にテキストファイルに保存しているだけです。
content = "" content += getArticle("user%2F-%2Flabel%2Fウマ娘") CommonFunction.updFileContent(trgtFolder + "ウマ娘.txt", content)
「user%2F-%2Flabel%2Fウマ娘」が「StreamId」です。
最初に作成したフォルダがあると思いますが、StreamIdを単純に言うと「user%2F-%2Flabel%2F{フォルダ名}」みたいにすればいいだけのようです。
inoreaderAPIのいいところ
  • API制限数が明白になっていること
  • 無償版でも普通に使えるだけのAPI制限数になっていること
inoreaderAPIのキツいところ
作った上でinoreaderAPIのキツかったところは以下です。
  • FeedlyAPIと違い、記事のサムネイルを取得できない
ちなみに以下の記事がこの方法で作成されているページです。 サンプル
コメントログ
※コメントは最新50件が表示されます
コメント投稿




画面下部の「コンタクト」からも連絡可能です。
管理人ツイート
商品サンプル画像
TAMASHII NATIONS 超合金 バック・トゥ・ザ・フューチャー PART3 TIME TRAIN 約520mm ABS&ダイキャスト&PVC製 塗装済み可動フィギュア
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認
商品サンプル画像
ポケモンカードゲーム MEGA 拡張パック メガブレイブ BOX
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
[バンダイ(BANDAI)] ナンバーワン戦隊ゴジュウジャー DXセンタイリングセット ゴーゴーファイブ&トッキュウジャー
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
タカラトミー(TAKARA TOMY) ぷにるんず ぷにすたる クリアブルー
商品ページ
Amazon
収益広告(自動登録)
管理人作品宣伝
【アークナイツ】グムがずっと殴ってくれる動画
動画 / 最終更新:2025-02-14
喝を入れたいあなたに。…喝を入れたいあなたに。

YouTubeで閲覧する利用素材等の詳細情報
【アークナイツ】アークナイツ運動会-関所破壊レース
動画 / 最終更新:2025-01-16
アークナイツ生息演算の岸壁の関の関門を誰が最速で破壊できるかを競います。…アークナイツ生息演算の岸壁の関の関門を誰が最速で破壊できるかを競います。

YouTubeで閲覧するニコニコ動画で閲覧する利用素材等の詳細情報
作品一覧はこちら
関連ページ
DOM要素の操作でよく使うプロパティ・メソッド一覧
最終更新日:2025-06-03
概要 JavaScriptでDOM操作(取得・作成・更新・削除)をする際によく使うプロパティとメソ…
記事を閲覧する
JavaScriptでアナログ時計とデジタル時計を表示するコード
最終更新日:2025-05-29
概要 最近アナログ時計を使ったので、アナログ時計を表示するJavaScriptコードを載せます。 …
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-03
最終更新日:2025-04-20
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-02
最終更新日:2025-04-15
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-01
最終更新日:2025-04-13
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
GIF / APNG(アニメーション付きPNG)ファイル解析ページ
最終更新日:2025-03-31
ファイル読込・操作 以下に調べたいファイルを読み込ませてください。 ファイル情報 カラーパレットを…
記事を閲覧する
gifler.js仕様メモ
最終更新日:2025-03-23
本ページの趣旨 「gifler.js」という、gifアニメーションをcanvasに簡単に表示できる…
記事を閲覧する
【プログラミング】実例で分かるかもしれない再帰処理
最終更新日:2024-12-15
本ページは以下動画の台本を書き起こしたものです 解説の趣旨・方向性 皆さん、こんばんは今回はプログ…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-公開
最終更新日:2024-12-06
概要 SNSツイートを一元化するためのツールを作成しています(古い記事ですが、こちらのページで紹介…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-Python
最終更新日:2024-10-13
概要 概要 SNSのツイートを一元化する際の備忘録というかPythonコードの共有です。 それぞれ…
記事を閲覧する
本サイトのタグ一覧
NovelAIR18VRoidWebサイト作成Webツールととモノ。アークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ギャラリーゲームデビラビローグネットスラング系プログラミングホラーポケットタウン怪談気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
人気記事
ポケットタウン_パズル一覧
最終更新日:2025-05-02
スコア:723.2140 pt
グレーのピースの数 (Number of gray pieces):検索グレーピースの数を入力して、…
記事を閲覧する
メイド・オブ・ザ・デッド-攻略お助け情報
最終更新日:2024-05-01
スコア:546.1300 pt
ネタバレ注意! 本ページは『メイド・オブ・ザ・デッド』の情報を記録しているものです。 攻略の参考に…
記事を閲覧する
剣と魔法と学園モノ。2G - パーティ編成確認ツール
最終更新日:2024-05-09
スコア:208.1683 pt
ツール概要 ととモノ。2Gのパーティ編成を考える際に使うツールです。 あくまでストーリークリアまで…
記事を閲覧する
ゲーム『イカれた狩場の看板娘』の紹介・レビュー
最終更新日:2025-05-01
スコア:142.8197 pt
記事概要 イカれたゲームを紹介するぜ! イカれた狩場の看板娘! 以上だ! ちなみにそんなイカれてな…
記事を閲覧する
アークナイツ-常設商品-理性換算
最終更新日:2024-04-28
スコア:136.9000 pt
概要 "常設商品でお得な商品はどれか"というのを理性に換算して一覧化したものとなります。 絶対的に…
記事を閲覧する
地獄先生ぬ~べ~で好きな切ないエピソード
最終更新日:2025-05-19
スコア:129.0732 pt
概要 初代というべきか、週刊少年ジャンプで連載されていた地獄先生ぬ~べ~の切ないエピソードの中で好…
記事を閲覧する
黒バス:キセキの世代級の人たちの技一覧
最終更新日:2024-07-21
スコア:128.4298 pt
黒バスのキセキの世代級の人たちの技一覧です 概要 黒バスのキセキの世代級の人たちの技を記載したもの…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
スコア:99.0103 pt
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
最新記事
htmlタグ混在のテキストをhtmlタグとプレーンテキストで分けるJavaScriptコード
最終更新日:2025-06-20
概要 「よくある質問は a href="/" こ span ち /span ら /a です」 とい…
記事を閲覧する
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する - JavaScript / CSSコード
最終更新日:2025-06-16
JavaScript全文コード 使い方 以下のJavaScriptとCSSコードを読み込んで、Te…
記事を閲覧する 返礼特典
htmlタグ混在のテキストを1行ずつ左から右へワイプ表示する
最終更新日:2025-06-16
概要 ここでは以下のようにテキストを一行ずつ左から右に表示するJavaScriptコードを載せてい…
記事を閲覧する
本サイトについて
最終更新日:2025-06-11
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
商品サンプル画像
BANDAI SPIRITS(バンダイ スピリッツ) 30MF クラスアップアーマー (リーベルソーサラー) 色分け済みプラモデル
商品ページ
Amazon
収益広告(自動登録)
※Amazonレビュー要確認