トップ回答者
MSNの最新のQ&A

質問
-
MSNの最新のQ&Aの“URL“http://g.msn.com/1me10IE9JAJP/508”をPCにダウンロードして活用したく思います。
同URLをクリックしますと掲載日付(例:2016年1月6日、23:33:01)が表示画面やソースでは確認できますので
VBSで該当するタグをxmlデータとして以下の方法で処理しますが、アクセスが出来ません。
その掲載日付のタグを処理したいので適切な方法(別途のURLも含めて)をお教えけますと幸いです。
-----
Set dateNodes = xmlDoc.getElementsByTagName("cfi:lastdownloadtime")
-----
回答
-
Microsoft コミュニティの「MSNの最新のQ&Aのタグ処理の件」からの移動ですね。
そちらのコメントでも書いているのですが、
http://g.msn.com/1me10IE9JAJP/508
にアクセスすると
http://rss.msn.com/ja-jp?feedoutput=rss
にリダイレクトされて RSS の XML がダウンロードされますが、その XML を見る限り "cfi:lastdownloadtime" という要素は見当たりません。「表示画面やソースでは確認できますので」という部分の具体的手順や方法を示されると良いかと思います。
hebikuzure
-
同URLをクリックしますと掲載日付(例:2016年1月6日、23:33:01)が表示画面やソースでは確認できますので
何か、勘違いをされているように思います。
とりあえず、件のフィードは RSS 2.0 の様です。RSS 2.0 の仕様には、「cfi:lastdownloadtime」という要素はありません。掲載日付であれば、「pubDate」(publication date)のはずです。そもそも、「掲載日付」という訳が間違っています。この要素は last download time、「前回ダウンロードした時間」です。ダウンロードした時間を、記事を掲載するときに付けることはできません。誰が、いつ、ダウンロードするかわからないのですから。
ということを考えると、「IE のリーダーが付加した情報」と考えるのが順当でしょう。ということで、「購読」の前後でソースがどの様になるか、比較しました。購読していない状態で見えるソース
<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <title>MSN Japan - Hotmail, Outlook.com, Skype, OneDrive, Bing</title> <description><![CDATA[MSN は ニュース、天気、マネー、スポーツ、ライフスタイル、自動車、動画など最新情報の提供から、Bing検索、メールの Outlook.com(旧 hotmail)など便利なサービスと連携するポータルサイトです。]]></description> <link>http://www.msn.com/ja-jp</link> <item> <title>記事のタイトル</title> <link>記事へのリンク</link> <description>記事の概要</description> <category></category> </item> </channel> </rss>
購読後に見えるソース
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"><channel xmlns:cfi="http://www.microsoft.com/schemas/rss/core/2005/internal" cfi:lastdownloaderror="None"><title cf:type="text">MSN Japan - Hotmail, Outlook.com, Skype, OneDrive, Bing</title><description cf:type="text">MSN は ニュース、天気、マネー、スポーツ、ライフスタイル、自動車、動画など最新情報の提供から、Bing検索、メールの Outlook.com(旧 hotmail)など便利なサービスと連携するポータルサイトです。</description><link>http://www.msn.com/ja-jp</link><item><title xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" cf:type="text">記事のタイトル</title><link>記事へのリンク</link><description xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" cf:type="html">記事の概要</description><cfi:id>134</cfi:id><cfi:effectiveId>1051704672</cfi:effectiveId><cfi:read>false</cfi:read><cfi:downloadurl>http://rss.msn.com/ja-jp?feedoutput=rss</cfi:downloadurl><cfi:lastdownloadtime>2016-01-01T00:00:00.000Z</cfi:lastdownloadtime></item></channel></rss>
次の違いがあります。
- channel 要素に名前空間の定義が追加されている。
- item 要素内に cfi 名前空間の要素が追加されている。
「IE のリーダーが付加した情報である」ことが確認されました。よって、ウェブからダウンロードしたフィード情報に "cfi:lastdownloadtime" の要素が見つからないのは当然、ということになります。
その掲載日付のタグを処理したいので適切な方法(別途のURLも含めて)をお教えけますと幸いです。
取得した情報を、どの様に「活用」するかはアプリケーションの勝手なので、IE のリーダーと同じように、独自の要素を定義して追加し、保存すれば良いと思います。
item 要素の識別には guid 要素を使うのだけど、使用されていないようですね。
Jitta@わんくま同盟
すべての返信
-
Microsoft コミュニティの「MSNの最新のQ&Aのタグ処理の件」からの移動ですね。
そちらのコメントでも書いているのですが、
http://g.msn.com/1me10IE9JAJP/508
にアクセスすると
http://rss.msn.com/ja-jp?feedoutput=rss
にリダイレクトされて RSS の XML がダウンロードされますが、その XML を見る限り "cfi:lastdownloadtime" という要素は見当たりません。「表示画面やソースでは確認できますので」という部分の具体的手順や方法を示されると良いかと思います。
hebikuzure
-
同URLをクリックしますと掲載日付(例:2016年1月6日、23:33:01)が表示画面やソースでは確認できますので
何か、勘違いをされているように思います。
とりあえず、件のフィードは RSS 2.0 の様です。RSS 2.0 の仕様には、「cfi:lastdownloadtime」という要素はありません。掲載日付であれば、「pubDate」(publication date)のはずです。そもそも、「掲載日付」という訳が間違っています。この要素は last download time、「前回ダウンロードした時間」です。ダウンロードした時間を、記事を掲載するときに付けることはできません。誰が、いつ、ダウンロードするかわからないのですから。
ということを考えると、「IE のリーダーが付加した情報」と考えるのが順当でしょう。ということで、「購読」の前後でソースがどの様になるか、比較しました。購読していない状態で見えるソース
<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <title>MSN Japan - Hotmail, Outlook.com, Skype, OneDrive, Bing</title> <description><![CDATA[MSN は ニュース、天気、マネー、スポーツ、ライフスタイル、自動車、動画など最新情報の提供から、Bing検索、メールの Outlook.com(旧 hotmail)など便利なサービスと連携するポータルサイトです。]]></description> <link>http://www.msn.com/ja-jp</link> <item> <title>記事のタイトル</title> <link>記事へのリンク</link> <description>記事の概要</description> <category></category> </item> </channel> </rss>
購読後に見えるソース
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005"><channel xmlns:cfi="http://www.microsoft.com/schemas/rss/core/2005/internal" cfi:lastdownloaderror="None"><title cf:type="text">MSN Japan - Hotmail, Outlook.com, Skype, OneDrive, Bing</title><description cf:type="text">MSN は ニュース、天気、マネー、スポーツ、ライフスタイル、自動車、動画など最新情報の提供から、Bing検索、メールの Outlook.com(旧 hotmail)など便利なサービスと連携するポータルサイトです。</description><link>http://www.msn.com/ja-jp</link><item><title xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" cf:type="text">記事のタイトル</title><link>記事へのリンク</link><description xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" cf:type="html">記事の概要</description><cfi:id>134</cfi:id><cfi:effectiveId>1051704672</cfi:effectiveId><cfi:read>false</cfi:read><cfi:downloadurl>http://rss.msn.com/ja-jp?feedoutput=rss</cfi:downloadurl><cfi:lastdownloadtime>2016-01-01T00:00:00.000Z</cfi:lastdownloadtime></item></channel></rss>
次の違いがあります。
- channel 要素に名前空間の定義が追加されている。
- item 要素内に cfi 名前空間の要素が追加されている。
「IE のリーダーが付加した情報である」ことが確認されました。よって、ウェブからダウンロードしたフィード情報に "cfi:lastdownloadtime" の要素が見つからないのは当然、ということになります。
その掲載日付のタグを処理したいので適切な方法(別途のURLも含めて)をお教えけますと幸いです。
取得した情報を、どの様に「活用」するかはアプリケーションの勝手なので、IE のリーダーと同じように、独自の要素を定義して追加し、保存すれば良いと思います。
item 要素の識別には guid 要素を使うのだけど、使用されていないようですね。
Jitta@わんくま同盟