November 24, 2011

Get a Web Page Title From URL

คราวนี้อยากจะลองเขียนโปรแกรมที่เกี่ยวข้องกับ Network ดูบ้าง ให้โปรแกรมของเราสามารถรับข้อมูลจากเซิร์ฟเวอร์โดยใช้ URL ของเว็บไซต์และสามารถนำมาประยุกต์ใช้ทำอะไรได้หลากหลาย ซึ่งในหัวข้อนี้เราจะมาลองหาชื่อ Title ของเว็บไซต์ที่เราต้องการกัน

อันดับแรกเราต้องมีความรู้เรื่องในเรื่องของโค้ด HTML กันนิดหน่อยก่อน เพราะสิ่งที่โปรแกรมจะอ่านข้อมูลมานั้น โดยส่วนใหญ่แล้วจะเป็น HTML source code ซึ่งถ้าเราเข้าใจตรงนี้ก็จะทำให้การเขียนโปรแกรมนั้นง่ายขึ้น (หากใช้ Chrome เป็น web browser เราสามารถดู code HTML ของเว็บได้ด้วยการคลิกขวาที่หน้าเว็บแล้วเลือก "ตรวจสอบองค์ฺประกอบ")

โครงสร้างของ HTML :
<html>
<head>
<title>.........</title>
<body>
...
...
...
</body>
</head>
</html>
เมื่อโปรแกรามรับ source code จาก URL ของเว็บที่ต้องการได้แล้ว เราจะเก็บ code HTML อันนั้นไว้ในรูปของ string จากนั้นก็จะใช้เทคนิคการตัดคำ (Substring) ตัดเฉพาะข้อความที่อยู่ภายในส่วนของ <title>......</title> มาแสดงผล ดังนี้

ตัวอย่างการเขียนโปรแกรม :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;   //<-- required header
using System.Net;  //<-- required header

namespace Network
{
  class Program
  {
    static void Main()
    {
      WebClient Client = new WebClient();
      Stream s = Client.OpenRead("http://peezg.blogspot.com"); //your URL here
      StreamReader sr = new StreamReader(s);
      string data = sr.ReadToEnd();
      sr.Close();
      s.Close();
      string st = "<title>"
      string title = data.Substring(data.IndexOf(st) + st.Length);
      title = title.Substring(0, title.IndexOf("</title>"));
      Console.WriteLine(title);
    }
  }
}
ซึ่งผลลัพธ์ที่ออกมาจากการรันโปรแกรมคือ Peez GloriousIntel ซึ่งเป็น Title ของเว็บ http://peezg.blogspot.com นั่นเอง

No comments:

Post a Comment