HttpWebRequest及Regex

來源:互聯網
上載者:User

      

 近日做了一下採集某個網頁的內容,並擷取其中所有的連結地址及連結標題。

 其中用到了HttpWebRequest和Regex,代碼備忘如下:
 

 //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(null, null);
        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();
            }
        }

 

這其中,Regex迷糊了我一會兒:因為沒有使用惰性匹配,導致每一次都只能匹配到一條資訊。。。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.