人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ブログのURLが100個あるとします。ここからRSSのURLを一気に抽出する方法はありませんか?

●質問者: nendnend
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● うぃんど
●34ポイント

(1)rssのアドレスはブログシステムによって違いがあります。

下記の例のようにURLのドメインから、
どこのブログを使っているのかを割り出し、
それぞれに対応することになります。

fc2.com(FC2ブログ)の例
http://help.fc2.com/blog/manual/Home/rss.html

ブログのURLに、?xml... が付加される形式になります。

トップページ(最新のエントリ)ブログURL/?xml
新着コメントブログURL/?xml&comment
新着トラックバックブログURL/?xml&trackback
カテゴリ毎ブログURL/?xml&category=カテゴリ番号
ユーザタグ毎ブログURL/?xml&utag=タグ名

ameblo.jp(アメーバブログ)の例
http://helps.ameba.jp/mobile/qguide/start/rssurl_1.html

アメーバブログのRSSのURLは以下の形式になります。
http://rssblog.ameba.jp/アメーバID/rss.html


(2)スクリプトでも、ワークシートでも対応可能です。

多くの場合、比較的簡単な文字列比較と置換なので、
phpなどのプログラミング言語を使ってもかまいませんし、
Excelのワークシート関数で処理してもかまわないでしょう。

過去質問からはどちらもお使いのようなので、
手軽なExcelのほうにしておきます。

ExcelのA列にリストがあれば下記の様な具合です。

C列 =IF(FIND("fc2.com",A1),A1&"?xml","") 
D列 =IF(ISERROR(SEARCH("ameblo.jp",A1)),"",SUBSTITUTE(A1,"ameblo.jp","rssblog.ameba.jp")&"rss.html")

上記では、合致しなければ空白になるように書いてあるので、
一列にしたければ下記のように結合します。

B列 =C1&D1

nendnendさんのコメント
丁寧なご回答ありがとうございます。ただ、そのやりかただと、いろいろなブログがあって、それぞれのrssのURLの形式を全て把握していないといけません。たとえば、google chrome のRSS Subscription Extension などだと、どんなブログを使っていても一発でRSSを取得できるので、すべて自動化することはできないか、と考えています。

2 ● oil999
●0ポイント

ブログの head 要素の中に

<link rel="alternate" type="application/rss+xml"... />

と書かれた行があります。
ここにRSSへのURLが記されています。


nendnendさんのコメント
できればもうすこし簡単な作業だと嬉しいです。

3 ● pigmon88
●33ポイント

rssを自動取得するwebサービスがいくつかありますが、以下はリストをインポートしたりエクスポートしたりもできます。

http://www.bloglines.com/


nendnendさんのコメント
これはよさそうですね。

4 ● ku__ra__ge
●33ポイント ベストアンサー

以下の内容を"getRss.js"という名前で保存して、rssの取得したいURLのリストを同フォルダの"in.txt"というテキストファイルに書き込んでから"getRss.js"をダブルクリックしてみてください。
"out.csv"という名前でrssのurlが追加されたファイルが作成されます。

var REGEXP_RSS_LINK = /<link.*rel="alternate".*type="application\/(rdf|rss|atom)\+xml".*href="([^"]+)"/i;
var fso = new ActiveXObject("Scripting.FileSystemObject");

var tsIn = fso.OpenTextFile("in.txt");
var tsOut = fso.OpenTextFile("out.csv", 2, true);
while(!tsIn.AtEndOfStream) {
var url = tsIn.ReadLine();
if (url) {
var feedUrl = getFeedUrl(url);
tsOut.WriteLine(url + "," + feedUrl.join(","));
}
}
tsIn .Close();
tsOut.Close();

WScript.Echo("end");


function getFeedUrl(url) {
var xhr = new ActiveXObject("MSXML2.XMLHTTP");
xhr.Open("GET", url, false);
xhr.send("");

var feedList = [];

var lines = xhr.responseText.replace(/\r\n/g,"\r").split(/[\r\n]/);
for (var i=0; i<lines.length; i++) {
if (lines[i].match(REGEXP_RSS_LINK)) {
feedList.push(RegExp.$2);
}
}

return feedList;
}

nendnendさんのコメント
わざわざありがとうございます。

5 ● type-a
●0ポイント

Google Reader の設定にエクスポートがあります。

そして xmlUrl="?" のある部分が rss の URL になります。


nendnendさんのコメント
それだと、自動じゃないですよね。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ