프로그래밍언어/VB.NET

[1]웹파싱? httprequest를 통해 html을 따와서 잘라내봅시다

부산딸랑이 2013. 2. 1. 12:26
html소스를 받아서 잘라내는 방법을 설명합니다.
순서는 아래와같습니다.

1. 홈페이지의 HTML소스를 받아온다.(WebRequest)
2. 받아온 HTML소스에서 특정 문자데이터를 잘라낼 "정규식" 을 만든다(Regex)
3. 정규식과 받아온 HTML소스를 비교해서 배열로 저장한다.(MatchCollection)
4. 비교해서 나온 정보를 출력한다.


첫번째. HTML소스 가져오기


새 모듈을 만들고 아래와같이 입력합니다.

(주소를 받아와 뽑아낸 Html소스(RespHTML)를  Form1에서 만들 DataHtml이라는 변수의 앞부분에 추가합니다.)

 

Imports System.Net

Public Module Module1

    Public Sub httpdown(Optional ByVal 주소 As String = "http://blog.daum.net/pootbar")

        on Error Resume Next

        Dim data As String = ""

        Dim wReq As WebRequest = WebRequest.Create(주소)

        Dim wResp As WebResponse = wReq.GetResponse

        Dim RespStream As System.IO.Stream = wResp.GetResponseStream

        Dim Reader As System.IO.StreamReader = New System.IO.StreamReader(RespStream, System.Text.Encoding.UTF8)

        Dim RespHTML() As String = Split(Split(Reader.ReadToEnd, "검색결과</h4>", 2)(1), "pg_inne", 2)

        Form1.dataHtml = RespHTML(0) & Form1.dataHtml

    End Sub

End Module


Form1로 돌아와서 버튼클릭이벤트에 아래와같이 모듈을 불러옵니다.

원래 주소는 "http://search.archeage.com/search?keyword=Handsomeboy&dt=characters&sf=score&st=desc&start=0"

(handsomeboy라는 캐릭터를 검색했을때 결과)

이지만 textbox1.text의 내용으로 검색할것이기에 textbox1.text를 넣었습니다.


폼의 최상단에 아래와같이 참조내용을 넣습니다


 Imports System.Net

Imports System.IO

Imports System.Text

Imports System.Text.Regularexpressions

Imports System.Threading


폼클래스의 최상단에 아래와같이 dataHtml을 모듈에서도 불러올수있게 선언합니다


 

    Public dataHtml As String = ""



  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Module1.httpdown("http://search.archeage.com/search?keyword=" & TextBox1.Text.ToString & "&dt=characters&ft=txt&sf=score&st=desc&start=0&page=1")

  End Sub