質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Q&A

1回答

2121閲覧

Nodeの中でRSSを開こうと思っても毎回エラーになってしまします。

KentoSasamoto

総合スコア49

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

0グッド

0クリップ

投稿2015/10/20 13:09

Node.jsの中ではてぶのRSSを取得しようとすると毎回取得に失敗するのですがどうすれば取得できるのでしょうか?

rss url 例 http://b.hatena.ne.jp/search/text?q=医療&mode=rss&threshold=30&sort=recent

route/index.js

1var express = require('express'); 2var http = require('http'); 3//var FeedParser = require('feedparser'); 4var router = express.Router(); 5var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; 6var $ = require('jquery'); 7 8 9/* GET home page. */ 10router.get('/', function(req, res, next) { 11 console.log(req.query) 12 console.log(req.query.url); 13 var xhr = new XMLHttpRequest(); 14 xhr.open("GET", "http://b.hatena.ne.jp/entry/json/?url="+req.query.url, true); 15 xhr.onload = function (e) { 16 var entry = JSON.parse(xhr.responseText); 17 var tags = parseResponce(entry); 18 var max = 0; 19 var tag; 20 for(var key in tags){ 21 if(max < tags[key]) { 22 max = tags[key]; 23 tag = key 24 }; 25 } 26 var FEED_URL = "http://b.hatena.ne.jp/search/text?q=" + tag + "&mode=rss&threshold=30&sort=recent"; 27 console.log(FEED_URL); 28 $.get(FEED_URL, function( data ) { 29 console.log("記事読み込み"); 30 $(data).find("item").each( function () { 31 var el = $(this); 32 console.log(el); 33 }); 34 }).fail(function() { console.log( "error" ); }); 35 console.log(tag); 36 } 37 xhr.send(); 38 res.render('index', { title: 'Express' }); 39}); 40 41function parseResponce(data) { 42 var tags = {}; 43 for (var i = 0; i < data.bookmarks.length; i++) { 44 var tagArray = data.bookmarks[i].tags; 45 for (var j = 0; j < tagArray.length; j++) { 46 var tag = tagArray[j]; 47 if (tag in tags) { 48 tags[tag] += 1; 49 } else { 50 tags[tag] = 1; 51 } 52 } 53 } 54 return tags 55}; 56 57module.exports = router;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

まず、パラメータをencodeURIComponentする必要があります。例:

bash

1curl http://b.hatena.ne.jp/search/text\?q\=医療\&mode\=rss\&threshold\=30\&sort\=recent 2# 302 3curl -L http://b.hatena.ne.jp/search/text\?q\=医療\&mode\=rss\&threshold\=30\&sort\=recent 4# <!DOCTYPE html> ... 5curl http://b.hatena.ne.jp/search/text\?q\=%E5%8C%BB%E7%99%82\&mode\=rss\&threshold\=30\&sort\=recent 6# <?xml version="1.0" encoding="UTF-8"?> ...

エンコード済みのurlであってもxmlhttprequestモジュールでは動作しませんでした。
代わりにrequestモジュールを使用した例を残します。

javascript

1var request = require('request'); 2request('http://b.hatena.ne.jp/search/text\?q\=%E5%8C%BB%E7%99%82\&mode\=rss\&threshold\=30\&sort\=recent',(error,response)=>{ 3 console.log(response.body); 4 // <?xml version="1.0" encoding="UTF-8"?> ... 5}) 6

投稿2015/10/27 16:02

horse_n_deer

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問