[C#] ดึงข้อมูลจากเวบไซต์ที่เป็นภาษาไทยด้วย C# พร้อมตัด HTML tag

RemoveHTMLtagwithCsharp.jpg

เนื่องด้วยโปรเจคจบของออฟมีส่วนที่ต้องทำการดึงข้อมูลจากเวบไซต์ที่เป็นภาษาไทย และต้องการนำข้อมูลส่วนที่ไม่ใ่ช่ HTML tag ต่างๆออกไปด้วย แบบว่าอยากได้แต่ข้อมูลเพรียวๆเลยนั่นแหละคะ พอทำได้แล้วก็เลยเอามาอัพบล็อคซะเลยเผื่อใครเจอปัญหาหรืออยากทำเหมือนกัน

  • ขั้นตอนหลักๆของการทำงาน

  1. ทำการดึงข้อมูลจาก URL ที่ระบุ
  2. ตัด Tag ต่างๆ ออกให้เหลือแต่ข้อมูล
  3. ทำการเซฟข้อมูลที่ได้ลงไฟล์
  • ทำการดึงข้อมูลจาก URL ที่ระบุ

 public void GetContentFromWeb()
    {
        WebClient objWebClient = new WebClient();
        String strURL = "http://don-jai.com/movie-the-ugly-truth/";
        String strRequest;
        UTF8Encoding objUTF8 = new UTF8Encoding();
        Byte[] byteRequest = objWebClient.DownloadData(strURL);
        string fileName = "web.txt";
        strRequest = objUTF8.GetString(byteRequest);
        string content = GetContent(strRequest);
        Byte[] f = System.Text.Encoding.UTF8.GetBytes(content);
        SaveFile(f, fileName);
    }
  • ตัด Tag ต่างๆ ออกให้เหลือแต่ข้อมูล

        public static string GetContent(string strRequest)
        {

            // Remove HTML Tag
            Regex regex = new Regex(@"\s]+))?)+\s*|\s*)/?>", RegexOptions.Singleline);
            MatchCollection matches = regex.Matches(strRequest);
            foreach (Match match in matches)
            {
                int begin = strRequest.IndexOf(match.Value);
                strRequest = strRequest.Remove(begin, match.Value.Length);
            }
            return strRequest;
        }
  • ทำการเซฟข้อมูลที่ได้ลงไฟล์

    public string SaveFile(byte[] f, string fileName)
    {
        try
        {
            MemoryStream ms = new MemoryStream(f);
            FileStream fs = new FileStream
                (System.Web.Hosting.HostingEnvironment.MapPath("~/Compare2File/") +
                fileName, FileMode.Create);
            ms.WriteTo(fs);
            ms.Close();
            fs.Close();
            fs.Dispose();
            return "OK";
        }
        catch (Exception ex)
        {
            return ex.Message.ToString();
        }
    }

Leave a comment