VB로 웹페이지 읽어오기 - 웹 스크랩

인터넷이 발달하고 다양한 정보가 홈페이지를 통해서 공개되고 있는 요즘 OPEN API를 활용한 Mash Up 기술로 간편하게 복합적인 기능을 웹 페이지에 얹는 것은 더이상 특별한 것이 아닙니다. 그런데 포털에서 단어를 검색하면 튀어나오는 페이지들을 포털은 대체 어떻게 알고 있지? 하는 의문이 들었던 적이 있다면 오늘의 코드를 통해서 포털 검색의 일부를 경험할 수 있을 것입니다.

프로그램은 화면에서 가져올 페이지의 주소(URL, Uniform Resource Locator)를 입력받아 닷넷 프레임워크에서 제공하는 기능을 통해서 해당 페이지를 검색합니다. 검색한 페이지의 소스에서 <body> 태그를 찾아 그 이후에 있는 내용에서 HTML 태그를 제외한 나머지 내용을 추출하여 하단 박스에 출력하는 과정으로 동작합니다. 윈도우 폼 형태의 프로젝트로 버튼 1개 텍스트 박스 2개를 가진 폼을 제작하고, 코드는 아래와 같이 작성합니다.

Imports System.Net
Imports System.IO
Imports System.Text.RegularExpressions
 
Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text.Length < 10 Then
            MsgBox("가져올 페이지의 URL을 입력하세요!")
            Return
        End If
 
        Try
            Dim wresp As WebResponse
            Dim wreq As WebRequest = HttpWebRequest.Create(TextBox1.Text)
            Dim str As String = ""
            wresp = wreq.GetResponse()
 
            Using sr As New StreamReader(wresp.GetResponseStream())
                str = sr.ReadToEnd()
                sr.Close()
            End Using
 
            Dim sta As Integer
 
            sta = InStr(str, "<body")
            If sta = 0 Then sta = InStr(str, "<BODY")
            If sta = 0 Then sta = 1 'not found <body or <BODY
 
            str = Regex.Replace(Mid(str, sta), "<.*?>", "")
            TextBox2.Text = str
        Catch ex As Exception
            MsgBox(ex.Message, "가져오기 실패")
        End Try
    End Sub
End Class

 

 

 

웹 URL을 HttpWebRequest, WebRequest을 통해서 호출하고 WebResponse를 통해서 받는 과정은 프로그램 외부와 통신하는 과정을 포함하므로 네트워크가 끊어 졌거나, 대상 서버가 다운 되었거나, 잘못된 주소인 경우 등등 다양한 장애 현상을 대비해야 하므로 연관 블럭을 Try...Catch...문장으로 처리해 줍니다. 읽어온 HTML 소스에서 <body 태그를 찾아 잘라내거나 특정 데이터만 찾는 과정등은 많은 경우 다양한 방식의 문자열 처리를 요구하는데 연관 함수나 사용법은 VB 문자열 다루기를 참조합니다.

Regex.Replace는 특정 문자열에서 정규식으로 지정한 문자열 패턴(<.*?>)을 찾아 지정한 문자열로 치환시키는 것으로 세번째 인수를 빈문자열("")로 지정했으므로 지우라는 의미입니다. 지정한 패턴 <.*?>은 '<'문자로 시작하고 '>'문자로 끝나는 모든 블럭을 의미합니다. HTML 또는 XML 태그가 해당합니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

위의 그림은 코드를 실행시켜 네이버 첫 화면을 조회한 결과입니다. 이러한 방식으로 네이버나 구글의 로봇(크롤러 web crawler, 짧게 봇 bot 이라고도 함)이 홈페이지를 뒤져서 나름의 방식으로 검색에 활용하는 것입니다. 그렇지만, 최근에 많이 사용하는 실시간 버스 위치 표시기라거나, 열차 시각표, 날씨등의 많은 정보들은 OPEN API 방식으로 정보를 제공하는데 위에서 사용한 방식으로 OPEN API의 주소와 파라미터를 입력하면 보통은 XML 형태로 깔끔하게 정보를 전달해 주므로 조회 결과를 나름 분석해서 자신의 의도에 맞게 사용하면 되겠습니다. OPEN API 뿐만아니라 RSS나 ATOM 읽기에도 매우 유용하게 사용할 수 있습니다.

이상 VB.Net을 이용한 웹 스크랩 방법을(Web Scrapping) 다루어 보았습니다.



출처: https://yaraba.tistory.com/412 [야라바]


 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
100 Visual Studio 2010 Ultimate 정식버전 전환, 정식버전, 정식버전 사용 졸리운_곰 2020.07.26 44
99 Selenium C# Webdriver Tutorial: NUnit Example file 졸리운_곰 2020.01.03 68
» VB로 웹페이지 읽어오기 - 웹 스크랩 file 졸리운_곰 2020.01.03 174
97 [C# 인공지능] 유전 알고리즘 : 유전 알고리즘으로 컴퓨터 자동 프로그래밍 AI-Programmer file 졸리운_곰 2019.12.28 230
96 C# 기초로 한글 검색기(초성 포함) 만들기 [Step by Step] file 졸리운_곰 2019.12.11 1384
95 (C#.NET 한글 프로그램 제작) 한글 조립 및 분해 하기 (유니코드 Unicode) file 졸리운_곰 2019.12.11 267
94 C#에서 유니코드를 이용한 한글 자모 분리와 결합 졸리운_곰 2019.12.11 1203
93 [C#] GUID 생성. file 졸리운_곰 2019.02.27 166
92 MetaWeblogAPI VisualBasic .NET 코드 샘플 졸리운_곰 2019.02.08 272
91 MetaWeblogAPI C# 코드 샘플 졸리운_곰 2019.02.08 252
90 A Look into the Future - Source Code Generation by the Bots file 졸리운_곰 2019.01.23 164
89 Machine Learning with ML.Net and C#/VB.Net file 졸리운_곰 2018.12.14 463
88 Scientific graphics in C# - [part 2] file 졸리운_곰 2018.12.06 3868
87 Scientific graphics in C# [part 1] file 졸리운_곰 2018.12.06 144
86 Window 7 Enterprise 64bit에 vb6 (visual studio 6.0 ent버젼) 설치 file 졸리운_곰 2018.12.04 363
85 Application Trial Maker file 졸리운_곰 2018.11.22 191
84 C# 프로젝트에서 C++ 코드 사용 : Use C++ codes in a C# project — unmanaged C++ solution 졸리운_곰 2018.10.30 199
83 C# 으로 구현하는 간단한 뉴럴네트워크 : Implementing Simple Neural Network in C# file 졸리운_곰 2018.10.30 326
82 Machine Learning with ML.Net and C#/VB.Net file 졸리운_곰 2018.08.16 827
81 오픈소스 닷넷 라이브러리 Awesome .NET! file 졸리운_곰 2018.07.08 2190
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED