□ Web Parsing
VBA Html Parsing은 VBA(Visual Basic for Applications)를 사용하여 웹 페이지에서 원하는 정보를 추출하는 기술을 말합니다. 엑셀, 파워포인트, 워드와 같은 마이크로소프트 오피스 응용 프로그램에서 웹 자동화, 데이터 수집, 크롤링 등 다양한 목적으로 활용됩니다.
▷ VBA Web Parsing 주요 기능:
- 웹 페이지 소스 가져오기: 웹 브라우저를 제어하거나 HTTP 요청을 사용하여 웹 페이지 소스 코드를 가져옵니다.
- HTML 파싱: 가져온 HTML 코드를 분석하여 원하는 데이터가 포함된 요소를 찾습니다.
- 데이터 추출: 찾은 요소에서 텍스트, 이미지, 링크 등 원하는 데이터를 추출합니다.
- 데이터 처리: 추출된 데이터를 정제, 변환, 저장 등 원하는 형태로 처리합니다.
... Parsing 이란?
원시 부호를 기계어로 번역하는 과정의 한 단계로, 각 문장의 문법적인 구성 또는 구문을 분석하는 과정. 즉 원시 프로그램에서 나타난 토큰(token)의 열을 받아들여 이를 그 언어의 문법에 맞게 구문 분석 트리(parse tree)로 구성해 내는 일이다.
▷ VBA 웹 파싱의 활용 예시
- 엑셀에서 최신 환율 자동 업데이트: 환율 정보가 제공되는 웹 사이트를 파싱하여 엑셀 시트에 자동으로 업데이트
- 파워포인트 프레젠테이션에 웹 데이터 자동 추가: 웹 사이트의 뉴스 기사나 통계 데이터를 파싱하여 프레젠테이션에 자동으로 추가
- 워드 문서에 웹 이미지 자동 삽입: 웹 사이트의 이미지를 파싱하여 워드 문서에 자동으로 삽입
- 온라인 가격 비교 도구 제작: 여러 e-커머스 웹 사이트의 가격 정보를 파싱하여 비교 도구 제작
- 사용자 맞춤형 뉴스 피드 생성: 사용자 관심사에 맞는 웹 사이트의 기사를 파싱하여 맞춤형 뉴스 피드 생성
1. WinHttp 라이브러리
WinHttp는 프로그램상에서 HTTP(HyperText Transfer Protocol,이하 프로토콜)로의 연결을 지원해주는 라이브러리입니다.
WinHttp 라이브러리를 사용하기 위해선 변수를 선언하는 것처럼 WinHttp 객체를 선언해줘야 합니다.소스 코드 최상단에 "Dim WinHttp As New WinHttpRequest"를 입력함으로써 WinHttp라는 이름으로 새로운 WinHttp 객체를 선언해주시면 됩니다. 결과값은 단순히 String으로 제공 -> DOM 형식에 따른 접근이 어렵습니다..
1) 일반적인 매서드
2) 일반적인 메서 - MS
3) 예제
- WinHttp.Open : "GET", URL 'GET방식으로 URL을 Open(연결)합니다.
- WinHttp.Send : '전송할 데이터를 입력하는 부분인데 GET 방식에서는 입력할 데이터가 없으니 그냥 Send만 해줍니다.
- MsgBox WinHttp.ResponseText : '메시지 박스를 이용하여 WinHttp에 연결된 URL의 Send후 소스코드를 띄웁니다.
ResponseText는 WinHttp에 응답,연결된 Text(소스코드)를 가져오는 읽기 전용 입니다. .ResponseText는 이용하면 한글을 포함한 몇몇 문자가 깨지는 현상이 발생 합니다. 내장된 함수인 StrConv를 이용하여 바이너리 형식으로 되어있는 WinHttp의 Text를 가져온뒤 유니코드로 변환을 해주어야합니다. 이너리 형식으로 읽어오기 위해선 .ResponseBody 속성을 사용해야합니다.
MsgBox WinHttp.ResponseBody으로 값을 가져오게되면 100%모든글씨가 깨지게 될것입니다. 바로 해당 값은 바이너리 형식이기때문입니다. 내장 함수인 StrConv를 사용해주어야 합니다. StrConv의 사용법은 아래와 같습니다.
MsgBox StrConv(WinHttp.ResponseBody,vbUnicode)
StrConv함수의 인자값은 StrConv(변환할 문자열,변환방식)입니다.
4) SetRequestHeader
WinHttp Header 는 HTTP 요청에 추가 정보를 제공하는 메타데이터라고 생각하면 됩니다. 마치 편지를 보낼 때 봉투에 송신자와 수신자 주소를 적는 것과 비슷합니다. WinHttp Header 는 서버에 요청의 목적, 클라이언트의 기능, 요청하는 데이터 형식 등을 알려줍니다. 사용 방법은 아래와 같습니다
WinHttp.SetRequestHeader "Header","Value"
※ Header 종류
- Host: 요청을 보내는 대상 웹 서버의 도메인 이름
- User-Agent: 요청을 보내는 브라우저 또는 애플리케이션의 이름과 버전
- Accept: 클라이언트가 수락할 수 있는 응답 콘텐츠 형식
- Content-Type: 요청 본문의 콘텐츠 형식
- Authorization: 인증 정보 (예: 사용자 이름 및 암호)
- Cookie: 이전 요청에서 서버에 저장된 데이터
※ Header 사용 하는 이유
- 서버와의 통신을 효율적으로 하기 위해: 헤더를 사용하면 서버가 요청을 이해하고 올바른 응답을 제공하는 데 도움이 됩니다. 예를 들어, Accept 헤더를 사용하면 클라이언트가 특정 형식의 콘텐츠만 수락할 수 있음을 서버에 알려 불필요한 데이터 전송을 줄일 수 있습니다.
- 웹 서버에 인증 정보를 제공하기 위해: Authorization 헤더를 사용하면 사용자 이름 및 암호와 같은 인증 정보를 서버에 전송하여 보호된 리소스에 액세스할 수 있습니다.
- 쿠키를 관리하기 위해: 쿠키는 이전 요청에서 서버에 저장된 데이터이며, Cookie 헤더를 사용하면 클라이언트가 서버에 쿠키를 전송하거나 수신할 수 있습니다.
- 캐싱을 제어하기 위해: Cache-Control 헤더를 사용하면 클라이언트가 응답을 캐시할지 여부를 제어할 수 있습니다.
- 요청 추적하기 위해: Referer 헤더를 사용하면 클라이언트가 요청을 보내기 전에 방문했던 웹 페이지를 추적할 수 있습니다.
※ 참고 사이트
'VBA For Windchill' 카테고리의 다른 글
HTTP (0) | 2024.06.30 |
---|---|
DOM (Document Object Model) 이란? (0) | 2024.06.30 |
Windchill에서 REST API의 빠른 테스트를 위해 객체 ID를 얻는 방법 (0) | 2024.06.28 |
json 파일 읽기 (0) | 2024.06.26 |
Windchill & VBA 02) Creating a WTPart (부품) (0) | 2024.06.26 |