VB(A)

웹페이지 파싱

당근쨈 2017. 9. 23. 12:37

정규식 패턴 짜는 게 재미져서 그걸로 파싱하려다가

카페에서 항상 도움받는 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(3As 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 12
                    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

통합 문서1.xlsm




'VB(A)' 카테고리의 다른 글

여러 시트를 쉽게 이동하기  (0) 2018.01.05
[정규식] 텍스트 파일을 조건에 맞게 쪼개서 가져오기  (0) 2017.12.31
[월보용] 데이터 합치기  (0) 2017.09.01
월보 취합 서식  (0) 2017.08.29
난수 생성기(로또)  (0) 2017.06.24