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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/10/01 16:45:44
  • 終了:2012/10/04 10:48:59

ベストアンサー

id:ku__ra__ge No.4

ku__ra__ge回答回数118ベストアンサー獲得回数402012/10/02 13:02:17

ポイント33pt

以下の内容を"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;
}
id:nendnend

わざわざありがとうございます。

2012/10/04 10:48:17

その他の回答(4件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/10/01 17:26:18

ポイント34pt

(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
id:nendnend

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

2012/10/01 19:24:50
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/10/01 17:55:43

ブログの head 要素の中に

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

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

id:nendnend

できればもうすこし簡単な作業だと嬉しいです。

2012/10/01 19:25:11
id:pigmon88 No.3

pigmon88回答回数501ベストアンサー獲得回数252012/10/01 23:44:47

ポイント33pt

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

http://www.bloglines.com/

id:nendnend

これはよさそうですね。

2012/10/04 10:48:07
id:ku__ra__ge No.4

ku__ra__ge回答回数118ベストアンサー獲得回数402012/10/02 13:02:17ここでベストアンサー

ポイント33pt

以下の内容を"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;
}
id:nendnend

わざわざありがとうございます。

2012/10/04 10:48:17
id:niwa-mikiho No.5

niwa-mikiho回答回数508ベストアンサー獲得回数382012/10/03 17:22:11

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

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

id:nendnend

それだと、自動じゃないですよね。

2012/10/04 10:48:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません