如何抓取页面里的script标签包括里面的内容

d120759632 2013-09-04 02:01:05
我现在已经把web页面里的所有内容抓取到一个字符里面了,问题是现在如何从这个字符串里取出script标签啊。
比如我现在有个字符串里包含
<script language="JavaScript" type="text/javascript" src="1.js">
</script>
<script language="JavaScript" type="text/javascript" src="2.js">
</script>
这两个script标签,我想把这两个取出来,怎么取呢?用正则表达式只能取一个。。。。看看我的正则表达式 <script[^>]*?>.*?</script>
...全文
3448 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wheic 2015-01-19
  • 打赏
  • 举报
回复
引用 7 楼 wonderfuly 的回复:
[quote=引用 6 楼 silwol 的回复:] 把html当成xpath用不好么,要是人家这么写的<script language="JavaScript" type="text/javascript" src="1.js" />,你这个regex不就抓瞎了
在html中这种写法是错误的.[/quote] 为什么是错误的啊?
advancer 2013-09-12
  • 打赏
  • 举报
回复
用正则表达式也是可以的。另外可以使用字符串替换的方法去做。 在html中查找两个字符之间的中间字符串。 函数如下:这样的结果可能是多个,使用递归的方法。使用List<String>将所有符合条件的全部保存起来.如果只有一个符合条件的话。则结果为lstResutl[0]就是你想要的结果 public static void GetMidInfoOfStartAndEnd2(String content, String start, string end, List<String> lstResult ) { int s1 = content.IndexOf(start); if(s1 >= 0) { //得到s1以后所有的内容 String content2 = content.Substring(s1); int s2 = content2.IndexOf(end); if(s2 >= 0) { String tmpInfo = content2.Substring(0, s2); lstResult.Add(tmpInfo.Trim()); content2 = content2.Substring(s2); GetMidInfoOfStartAndEnd2(content2, start, end, lstReplaceStr, lstResult); } } } 来源:it知识 http://www.itzhishi.com/function/detail/18.html
游戏人间 2013-09-12
  • 打赏
  • 举报
回复
引用 6 楼 silwol 的回复:
把html当成xpath用不好么,要是人家这么写的<script language="JavaScript" type="text/javascript" src="1.js" />,你这个regex不就抓瞎了
在html中这种写法是错误的.
silwol 2013-09-04
  • 打赏
  • 举报
回复
把html当成xpath用不好么,要是人家这么写的<script language="JavaScript" type="text/javascript" src="1.js" />,你这个regex不就抓瞎了
游戏人间 2013-09-04
  • 打赏
  • 举报
回复
在winform中textBox1输入字符串,textBox2输入匹配的结果. 上个按钮调用下列函数. 如果自己想封装一下,把对应控件改成传入传出参即可.


  
        public void RegexScript()
        {
            textBox2.Text = "";
            string patten = "<script.*?>[\\s.]*?</script>";

            MatchCollection mc = Regex.Matches(textBox1.Text, patten);
            for (int i = 0; i < mc.Count; i++)
            {
                Match m = mc[i];
                textBox2.Text += m.Value + "\r\n";
            }
        }


游戏人间 2013-09-04
  • 打赏
  • 举报
回复
Matches ms= Regex.Matches("你的字符串","你的正则表达式"); List<string> script=new List<string>(); foreach(Match m in ms) { script.Add( m.Value); } script 这个就有多个了.
F15Eagle 2013-09-04
  • 打赏
  • 举报
回复
用正则表达式能取一个的话还不好办?取出来之后,把取出来的内容replace掉,然后再取一个呗,直到取不出为止啊。
d120759632 2013-09-04
  • 打赏
  • 举报
回复
大神们呢,别沉了啊!
d120759632 2013-09-04
  • 打赏
  • 举报
回复
还有,这个正则表达式是我在网上找的有点看不懂,它在</script>标签之前匹配 怎么有2个>这个啊,不是应该只有一个的么?

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧