javascript regex replace を使用して一部の html をクリアするのに問題があります。タスクは、ローカル ソースから XBMC のテレビ リストを取得することです。URL はhttp://tv.dir.bg/tv_search.php?step=1&all=1 (ブルガリア語) です。スクレーパーを使用してデータを取得しようとしています - http://code.google.com/p/epgss/ (Ivan Markov へのクレジット - http://code.google.com/u/113542276020703315321/ ) 残念ながら、上記のツールが最後に更新されてから、テレビ番組表のページが変更されたので、機能させようとしています。問題は、HTML から XML を解析しようとすると壊れることです。私は現在、ヘッドタグとスクリプトタグを正規表現に置き換えて、HTMLを少しきれいにしようとしています。残念ながら、うまくいきません。これが私の置き換えです:
function regexReplace(pattern, value, replacer)
{
var regEx = new RegExp(pattern, "g");
var result = value.replaceAll(regEx, replacer);
if(result == null)
return null;
return result;
}
そして、ここに私の電話があります:
var htmlStringCluttered = HTML.getHTML(new URL(url), "WINDOWS-1251");
log("Content grabbed (schedule for next 7 days)");
log(url);
var htmlString = regexReplace("<head>([\\s\\S]*?)<\/head>|<script([\\s\\S]*?)<\/script>", htmlStringCluttered, "");
getHTML 関数は、User-Agent の設定を少し変更した元のソースから取得されます。そのベースは次のとおりです。
public static java.io.Reader open(URL url, String charset) throws UnsupportedEncodingException, IOException
{
URLConnection con = url.openConnection();
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.38 Safari/532.0");
con.setAllowUserInteraction(false);
con.setReadTimeout(60*1000/*ms*/);
con.connect();
if(charset == null && con instanceof HttpURLConnection) {
HttpURLConnection httpCon = (HttpURLConnection)con;
charset = httpCon.getContentEncoding();
}
if(charset == null)
charset = "UTF-8";
return new InputStreamReader(con.getInputStream(), charset);
}
regexReplace の結果は元のものとまったく同じです。また、XML は解析できないため、スクリプトは要素を読み取ることができません。何か案は?