Rhino:envjsでpreタグが含まれるページをパースすると途中で切れる の変更点
Top / Rhino:envjsでpreタグが含まれるページをパースすると途中で切れる
- 追加された行はこの色です。
- 削除された行はこの色です。
- Rhino:envjsでpreタグが含まれるページをパースすると途中で切れる へ行く。
- Rhino:envjsでpreタグが含まれるページをパースすると途中で切れる の差分を削除
[[Java:Rhino:初めてのRhino]] [[Rhino:envjsとjQueryをつかう]] -[[Java:Rhino:初めてのRhino]] -[[Rhino:envjsとjQueryをつかう]] *Rhino:envjsでpreタグが含まれるページをパースすると途中で切れる [#uca93caa] Rhinoでenvjsをつかってpreタグが含まれるページをパースすると、preタグのところで出力が切れてしまいます。 原因は、envjsのバグで、チケットにも登録されていました。 -http://envjs.lighthouseapp.com/projects/21590/tickets/176-cannot-parse-pre-tags しかし、改修はされていないようです、、、 今回は、Webページ(このWiki)をスクレイピングすることを目的としてるので、以下のコードのとおり、<pre>タグを<p>タグに置換することで、事象を回避しました。 ***コード [#p8e47cca] 実行するためには、Rhino+envjs+jQueryの環境で実行する必要があります。 実行するためのJavaのコードはこちらを参照 -[[Rhino:envjsとjQueryをつかう]] ■sample3.js function sample(){ url = 'http://www.hiihah.info'; function sample(url){ url = 'http://www.hiihah.info/index.php?Mahout%EF%BC%9A%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB2%EF%BC%9A%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0'; window.location = url; // envjsで取得した<pre>タグが入っているコンテンツをそのまま出力 print('NG出力#############################################################'); print($.(':root').text()); print($('#body').text()); // jQueryのajaxで取得した場合 var res = $.ajax({ url: url, async : false, }); print('NG出力#############################################################'); print($(res.responseText).find('#body').text()); // <pre>タグを<p>タグに置換して出力するとちゃんと出力される。 print('OK出力#############################################################'); result = $(res.responseText.replace(/<pre>/g,'<p>').replace(/<\/pre>/,'</p>')).find('#body').text() print(result); return result; }; 具体的には -window.locationで読み込んだデータは× -ajaxで読み込んで、そのままjQueryオブジェクトを生成しても× -ajaxで読み込んで、テキストの状態でpreタグをpタグに置換してjQueryオブジェクトを生成したらOK まあ、Rhino上でjQueryを実行する際に、domまわりはenvjsを使用しているから、こうなるんだよねw