1. 程式人生 > >C# 正則表示式抓取網頁上某個標籤的內容,並替換連結地址和圖片地址

C# 正則表示式抓取網頁上某個標籤的內容,並替換連結地址和圖片地址

     #region 獲取第三方網站內容


      //獲取其他網站網頁內容的關鍵程式碼
      WebRequest request = WebRequest.Create(第三方的網站地址);
      WebResponse response = request.GetResponse();
      StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
      //reader.ReadToEnd() 表示取得網頁的原始碼
      string Code = reader.ReadToEnd();




      HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
      document.LoadHtml(Code);


      #region 處理連結地址


      HtmlNodeCollection nodes = document.DocumentNode.SelectNodes(@"//a");
      if (nodes != null)
      {
        string strSrc = string.Empty;
        foreach (var Item in nodes)
        {


          string strUrl = Item.GetAttributeValue("href", "");
          if (!string.IsNullOrEmpty(strUrl) && strUrl != "#" && strUrl.Contains(".."))
          {
            strUrl = "原網站的連結" + strUrl.Substring(2);
          }
          else if (!string.IsNullOrEmpty(strUrl) && strUrl != "#" && !strUrl.Contains(".."))
          {
            strUrl = "原網站的連結" + strUrl;
          }


          Item.SetAttributeValue("href", "#");
          Item.SetAttributeValue("class", "ininfo");
          Item.SetAttributeValue("data-url", strUrl);
          //Item.SetAttributeValue("data-original", strSrc);
        }
      }


      #endregion


      #region 處理圖片地址
      nodes = document.DocumentNode.SelectNodes(@"//img");
      if (nodes != null)
      {
        string strSrc = string.Empty;
        foreach (var Item in nodes)
        {


          string strImg = Item.GetAttributeValue("src", "");
          if (!strImg.Contains("http"))
          {
            strImg = "原網站的連結" + strImg;


            Item.SetAttributeValue("src", strImg);
          }


          Item.SetAttributeValue("style", "width:100%");
          //Item.SetAttributeValue("data-original", strSrc);
        }
      }


      #endregion




      var temp = document.DocumentNode.SelectSingleNode("//div[@class='detail']");






      ViewData["contenttext"] = temp.InnerHtml;


      #endregion