RSSリーダー過去から全文取ってくる方法

タグの編集
投稿者 じおん  (社会人) 投稿日時 2013/5/31 11:02:50
RSSリーダーで出来る限り過去の情報も取得するソフトをVB2008/Win7_64bitで開発しております。

RSSリーダーの本文を過去にさかのぼってどんどん取ってくるようなソフト開発なのですが、xmlファイルにあるもののみしか取得できません。

googleリーダーは下にスクロールしていくと延々と過去の記事までさかのぼれます。どのように作成したら過去まで根こそぎ記事を取れるようなVBソフトになるかご伝授ください。

以下はフォームにRSSURLを入力するテキストボックスと取得スタートのボタン、結果を表示するテキストボックス(マルチライン)の3つのみのシンプルなソースです。

宜しくお願いします。


Imports System.Xml

Public Class frmMain

Private Sub Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn.Click, btnGetRssHonbun.Click
Dim reg As String
Dim tempStr As String = ""
reg = Me.txtRssUrl.Text

Dim loader As XmlReader = XmlReader.Create(reg)


While loader.Read
tempStr = tempStr & loader.Value & vbCrLf
End While
Me.txtResult.Text = tempStr.ToString

End Sub
End Class
投稿者 るきお  (社会人) 投稿日時 2013/5/31 21:15:18
RSSは公開されている部分のみが取得でき、公開されていない部分は取得することはできません。
ほとんどのサイトでは一定数より前のRSSは公開されなくなるので、その一定数を超えて過去にさかのぼることはできません。

けれども、Googleリーダーは確かに公開されていない過去の情報もどんどんさかのぼって表示することができるように見えます。
多分、これはGoogleのデータベースの蓄積されている過去のRSSの情報を基にしているのだと私は推理します。Googleは検索エンジンで有名なので多くの情報を蓄積しているのでしょう。

そこで、じおんさんも過去の情報をどこかに蓄積しておいて、その情報を読みに行くようなRSSリーダーを作れば、RSSで公開されなくなった過去の情報も蓄積開始時点まではさかのぼって取得できるようにすることができます。

このプログラムは(あらかじめ指定したRSSだけを対象にすれば)それほど難しくはないと思いますが、過去の情報を蓄積する場所を用意するのと、Googleのように常時情報を監視するようにプログラム(=クローラー)を動かす場所を用意するのが大変です。

たとえば、クローラーを自分のパソコンで動作させると、パソコンをシャットダウンしている間の情報は抜けてしまうかもしれません。
私であれば、蓄積する場所もクローラーもAzure上に構築しますが、この方法だとちょっとお金がかかります。
投稿者 じおん  (社会人) 投稿日時 2013/6/3 12:28:40
るきお様、ありがとうございます。

そういう仕掛けだったんですね。勉強になりました。

そもそもこのようなRSSソフトを作りたいと考えたのはgoogle readerサービスが停止するということで、他のRSSリーダーではできない全文取得ソフトを作りたかったわけなのですが、、、、結局googleの特権である情報の蓄積によるものということで納得しました。

おっしゃる通り自分で蓄積の仕組みを作るのも手ですね。

それが上手く行かないようであれば(すでにフリーウェアなどでもありますが)Webをまるごと取るようなソフトの方がいいかもしれません。

とにかくとても参考になりました。ありがとうございますm(_ _)m