정규식 패턴 짜는 게 재미져서 그걸로 파싱하려다가
카페에서 항상 도움받는 C*******e님의 추천으로 HTML에서 바로 자료 가져오는 걸로 노선을 수정.
클래스네임으로 가져오는 거라 일도 아님.
웹파싱은 서버에 무리를 줄 수 있어서 URL은 일부만.
제품명, 스펙, 가격을 가져오는 코드이다.
Option Explicit Option Base 1 Sub Macro() Dim oHtml As New HTMLDocument '도구 - 참조 - Microsoft HTML Object Library 체크 Dim oElement As Object Dim URL As String Dim ClassName(3) As String Dim i As Integer, j As Integer Dim v() As String URL = "http://%D4%B7%C2&splist_sbno%5B%5D=23027#ProductList" ClassName(1) = "prd_name" '제품명 ClassName(2) = "prd_subTxt" '스펙 ClassName(3) = "prd_price" '가격 '페이지 소스 가져오기 With CreateObject("WINHTTP.WinHTTPRequest.5.1") .Open "GET", URL, False .send .WaitForResponse oHtml.body.innerHTML = .responseText End With '제품 리스트만큼 재배열 ReDim v(oHtml.getElementsByClassName(ClassName(1)).Length, 3) For j = 1 To 3 i = 1 For Each oElement In oHtml.getElementsByClassName(ClassName(j)) Select Case j '제품명, 스펙 가져오기 Case 1, 2 v(i, j) = oElement.innerText i = i + 1 '판매가격일 때 가격 가져오기 Case 3 If InStr(oElement.innerText, "판매가격") Then v(i, j) = oElement.innerText i = i + 1 End If End Select Next oElement Next j '셀에 출력 Range("A1").Resize(UBound(v), 3) = v End Sub | cs |
'VB(A)' 카테고리의 다른 글
여러 시트를 쉽게 이동하기 (0) | 2018.01.05 |
---|---|
[정규식] 텍스트 파일을 조건에 맞게 쪼개서 가져오기 (0) | 2017.12.31 |
[월보용] 데이터 합치기 (0) | 2017.09.01 |
월보 취합 서식 (0) | 2017.08.29 |
난수 생성기(로또) (0) | 2017.06.24 |