我正在使用下面的代码行下载网页,
WebRequest request = WebRequest.Create(strURL);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
然后从这里我提取身体部分如下:
int nBodyStart = downloadString.IndexOf("<body");
int nBodyEnd = downloadString.LastIndexOf("</body>");
String strBody = downloadString.Substring(nBodyStart, (nBodyEnd - nBodyStart + 7));
现在我想删除正文部分中附加的任何 JavaScript,我该怎么做?
我的目标是获取网页的唯一内容。但由于每个页面可能有不同的方法,所以我尝试删除任何 js 标签,然后使用下面的正则表达式删除任何 HTML 标签
Regex.Replace(strBody, @"<[^>]+>| ", "").Trim();
但我不知道如何删除脚本标记之间的js,因为脚本可能是多行或单行。
提前致谢。
要匹配脚本标签(包括对的内部),请使用以下命令:
<script[^>]*>(.*?)</script>
要匹配所有 HTML 标签(但不匹配对的内部),您可以使用:
</?[a-z][a-z0-9]*[^<>]*>
我刚刚意识到您可能也想删除样式标签:
<style[^>]*>(.*?)</style>
完整的正则表达式字符串在这里:
<script[^>]*>(.*?)</script>|<style[^>]*>(.*?)</style>|</?[a-z][a-z0-9]*[^<>]*>|<[^>]+>|
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)