zoukankan      html  css  js  c++  java
  • HttpWebRequest及正则表达式

          

     近日做了一下采集某个网页的内容,并获取其中所有的链接地址及链接标题。

     其中用到了HttpWebRequest和正则表达式,代码备忘如下:
     

     //WebClient wc = new WebClient();
    //NetworkCredential nc = new NetworkCredential("用户名", "密码", "域名");
            
    //wc.Credentials = nc;
            
    //Response.Write(Server.HtmlEncode(wc.DownloadString("地址")));

            HttpWebRequest req 
    = (HttpWebRequest)WebRequest.Create("地址");
            req.Credentials 
    = new NetworkCredential("用户名""密码""域名");
            req.Method 
    = "GET";        
            IAsyncResult ir 
    = req.BeginGetResponse(nullnull);
            ir.AsyncWaitHandle.WaitOne();
            
    try {
                HttpWebResponse response1 
    = (HttpWebResponse)req.EndGetResponse(ir);
                System.IO.Stream stream 
    = response1.GetResponseStream();
                sReader 
    = new System.IO.StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312"));
                
    if (null != sReader) {
                
    string pattern = @"<a(?:\s*?)href=['|""](?<url>[\s\S]+?)['|""]>(?<title>[\s\S]+?)</a>";
                System.Text.RegularExpressions.MatchCollection matchs 
    = System.Text.RegularExpressions.Regex.Matches(sReader.ReadToEnd(), pattern);
                
    if (matchs.Count <= 0)
                    Response.Write(
    "没有匹配项");
                
    else
                
    {
                    
    for(int i=0;i<50;i++)
                    
    {
                        Response.Write(
    "链接:" + matchs[i].Groups["url"].Value+"___名称:"+matchs[i].Groups["title"].Value+"<br />");
                    }

                }

                }

            }

            
    catch (System.Exception ex) {
                Response.Write(ex.Message);
            }

            
    finally {
                
    if (null != sReader) {
                    sReader.Dispose();
                }

            }

    这其中,正则表达式迷糊了我一会儿:因为没有使用惰性匹配,导致每一次都只能匹配到一条信息。。。。

  • 相关阅读:
    【Android N 7.1.1】 屏幕亮和灭的处理地方
    Android 测量调用方法耗时的方法
    【Android M】获取屏幕锁定的相关信息:“无”,“滑动”,“PIN码”,"图案","密码"
    【Android N 7.1.1】 ActivityManagerService 获取cpu状态
    Android 判断当前是否在跑monkey测试
    【Android N 7.1.1】 锁屏之上显示Toast
    【Android N 7.1.1】 处于锁屏界面时可以转屏
    【Android N 7】使用量统计usagestats
    #### 批处理命令 获取当前目录下所有文件的路径
    Linux命令 swap:内存交换空间
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1495475.html
Copyright © 2011-2022 走看看