我无法通过 javascript 正则表达式替换清除一些 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,因此脚本无法读取元素。有任何想法吗?