Code Bye

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

我现在已经把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>

 

5分
正则表达式能取一个的话还不好办?取出来之后,把取出来的内容replace掉,然后再取一个呗,直到取不出为止啊。

5分
Matches  ms=  Regex.Matches(“你的字符串”,”你的正则表达式“);
List<string> script=new List<string>();
foreach(Match m in ms)
{
  script.Add( m.Value);
}
script 这个就有多个了.

10分
在winform中textBox1输入字符串,textBox2输入匹配的结果.
上个按钮调用下列函数.
如果自己想封装一下,把对应控件改成传入传出参即可.
pre class=”brush: csharp”>
  
        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”;
            }
        }
/pre>

5分
把html当成xpath用不好么,要是人家这么写的<script language=”JavaScript” type=”text/javascript” src=”1.js” />,你这个regex不就抓瞎了

5分
引用 6 楼 silwol 的回复:

把html当成xpath用不好么,要是人家这么写的<script language=”JavaScript” type=”text/javascript” src=”1.js” />,你这个regex不就抓瞎了

在html中这种写法是错误的.


10分
正则表达式也是可以的。另外可以使用字符串替换的方法去做。 
在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
引用 7 楼 wonderfuly 的回复:
Quote: 引用 6 楼 silwol 的回复:

把html当成xpath用不好么,要是人家这么写的<script language=”JavaScript” type=”text/javascript” src=”1.js” />,你这个regex不就抓瞎了

在html中这种写法是错误的.

为什么是错误的啊?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何抓取页面里的script标签包括里面的内容