웹 페이지 요청을 한 다음, html 결과물을 추출하는 방법에 대해 예제를 보여드릴까 합니다.
웹페이지의 html 을 추출할 수 있도록 쉽게 구현할 수 있게끔 클래스를 .net framework 에서 제공해 주고 있는데요.
HttpWebRequest 와 HttpWebResponse 의 2개의 클래스로 쉽게 비교적 쉽게 구현 할 수 있습니다.
1. HttpWebRequest
: http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
2. HttpWebResponse
: http://msdn2.microsoft.com/en-us/library/system.net.httpwebresponse.aspx
우선 우리는 웹페이지에 form 타입을 결정할 필요가 있습니다. 즉, get 방식과 post 방식으로 구분하여 두개의 다른 메소드를 이번
강좌에 설명할까 합니다.
이러한 메소드에 대한 기본적인 이해를 가지고 있다는 가정하에 진행하겠습니다.
그리고 간단하게 구현하는 방법을 예제로 보여드릴 겁니다.
두개의 메소드를 구현하기 위해 우리는 실질적으로 결과물을 보여주는 간단한 페이지를 구현할 필요가 있습니다. 그래서 웹페이지에 Textbox
컨트롤을 만들어서 결과물이 보이도록 하겠습니다.
1) 웹 디자인 페이지 구현(.aspx)
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" Rows="40"
Columns="100" TextMode="MultiLine"></asp:TextBox>
</div>
</form>
</body>
자.. 이제 우리가 이것을 사용하기 위해 결정해야 할 메소드를 구현해보죠.
>>>>> Get 메소드 사용하기
이는 쿼리string 값을 url 에 추가하고 간단하게 url 을 설정하여 요청을 하도록 만들어보죠.
그리고 그 결과값을 받아서 textbox 에 값을 할당하는 방법을 구현해 보죠.
1> vb.net 으로 구현
Dim strURL As String
Dim strResult As String
Dim wbrq As
HttpWebRequest
Dim wbrs As HttpWebResponse
Dim sr As StreamReader
' URL 설정하기 (쿼리string 값을 추가하기)
strURL = "http://aspnetlibrary.com/articles.aspx?Page=1"
' web request 생성하기
wbrq = WebRequest.Create(strURL)
wbrq.Method =
"GET"
'반환 데이터를 읽기
wbrs = wbrq.GetResponse
sr = New StreamReader(wbrs.GetResponseStream)
strResult = sr.ReadToEnd.Trim
sr.Close()
'페이지로 부터 반환 data를 출력하기
TextBox1.Text = strResult
2> c# 으로 구현
string strURL;
string strResult;
HttpWebRequest wbrq;
HttpWebResponse wbrs;
StreamReader sr;
strURL = "http://aspnetlibrary.com/articles.aspx?Page=1";
wbrq =
WebRequest.Create(strURL);
wbrq.Method = "GET";
wbrs = wbrq.GetResponse;
sr = new StreamReader(wbrs.GetResponseStream);
strResult =
sr.ReadToEnd.Trim;
sr.Close();
TextBox1.Text = strResult;
>>>>> POST 메소드 사용하기
실질적으로 페이지에 보내게 될 데이터를 명시해야 하는 요소때문에 GET 메소드보다 조금 길게 구현되어 있습니다. 또한 실질적인
TYPE 을 설정해 주어야 하며, 이 내용에 대한 길이 또한 설정해 주어야 합니다.
1> VB.NET 구현하기
Dim strURL As String = ""
Dim strPostData As String = ""
Dim
strResult As String = ""
Dim wbrq As HttpWebRequest
Dim wbrs As
HttpWebResponse
Dim sw As StreamWriter
Dim sr As StreamReader
' POST 방식으로 URL 설정하기
strURL = "http://www.webcom.com/cgi-bin/form"
strPostData =
String.Format("your_name={0}&userid={1}&form_name={2}", "Mark Smith",
"webcom", "tutortest")
' web request 생성하기
wbrq = WebRequest.Create(strURL)
wbrq.Method = "POST"
' Referer 항상 설정할 필요는 없습니다.
wbrq.Referer = "http://www.webcom.com/cgi-bin/form"
wbrq.ContentLength =
strPostData.Length
wbrq.ContentType = "application/x-www-form-urlencoded"
' data 를 POST 한다.
sw = New StreamWriter(wbrq.GetRequestStream)
sw.Write(strPostData)
sw.Close()
' 반환 DATA 를 읽는다.
wbrs = wbrq.GetResponse
sr = New
StreamReader(wbrs.GetResponseStream)
strResult = sr.ReadToEnd.Trim
sr.Close()
' 페이지에서 데이터를 반환받아 Textbox 에 입력한다.
TextBox1.Text = strResult
2> C# 으로 구현하기
string strURL = "";
string strPostData = "";
string strResult = "";
HttpWebRequest wbrq;
HttpWebResponse wbrs;
StreamWriter sw;
StreamReader sr;
strURL = "http://www.webcom.com/cgi-bin/form";
strPostData =
string.Format("your_name={0}&userid={1}&form_name={2}", "Mark Smith",
"webcom", "tutortest");
wbrq = WebRequest.Create(strURL);
wbrq.Method =
"POST";
wbrq.Referer = "http://www.webcom.com/cgi-bin/form";
wbrq.ContentLength =
strPostData.Length;
wbrq.ContentType = "application/x-www-form-urlencoded";
sw = new StreamWriter(wbrq.GetRequestStream);
sw.Write(strPostData);
sw.Close();
wbrs = wbrq.GetResponse;
sr = new
StreamReader(wbrs.GetResponseStream);
strResult = sr.ReadToEnd.Trim;
sr.Close();
TextBox1.Text = strResult;
둘다 간단한 예제로 웹페이지에서 응답에 대한 결과값을 읽어들이는 메소드를 쉽게 기술했습니다.
웹페이지로 부터 어떤 정보를 오직 보여주기 위해 필요하다면 그 결과값을 분명히 parse 할 수도 있습니다.
감사합니다.
참고 : http://aspnetlibrary.com/
===============================
카페 : cafe.daum.net/aspdotnet
작성자 : 심재운
메일 : shimppark@gmail.com
===============================