vba 크롤링, 버튼 누를때 리퀘스트 따기

파워쿼리/피벗
작성자
박진호
작성일
2024-07-16 16:12
조회
273
엑셀버전 : 엑셀2019

운영체제 : 윈도우10


질문 요약 : vba 크롤링, 버튼 누를때 리퀘스트 따기

안녕하세요,

아래와같이 이전에 질문을 올렸었는데

https://www.oppadu.com/community/question/?mod=document&pageid=1&uid=72208&execute_uid=72208

셀레니움이 데이터 가져오는게 너무 느려서

다른 방식이 없는지 궁금합니다.

 

https://finance.yahoo.com/quote/CROX/financials/ 사이트에서

Annual / Quarterly 버튼을 누를때

발생하는 리퀘스트를 분석해서 winhttp로 던지고, 리턴을 받고싶은데요

리퀘스트를 어떻게 코드에 적용해야하는지 모르겠습니다..

 

 

https://finance.yahoo.com/quote/CROX/financials/

해당 사이트에서 income statement의 Annual 탭에서

row svelte-1ezv2n5라는 클래스를 불러와서

테이블에 있는 데이터 break down / ttm / 12/31/2023 / 12/31/2022 ...쭉쭉 뽑아낼 수 있는 상황인데요

Annual 이 아닌 Quarterly탭을 클릭했을때의 바뀌는 데이터를 접근해보고 싶은데

문제가.. 클래스 네임이 Annual과 Quarterly 양쪽 모두 row svelte-1ezv2n5로 같습니다.

Annual 과 Quarterly버튼을 누를 때

table index의 값이 바뀌면서. table에서 나오는 데이터가 바뀌고 있는데요

클래스 네임은 동일해서 vba에서 추출할때 어떻게 접근해야하는지 모르겠습니다..

셀레니움으로 버튼을 클릭했을 때 접근가능해보이긴하는데

셀레니움 속도가 느려서 winhttp로 구현해보고 싶습니다.

Quarterly에 어떻게 접근하는게 좋을지 고견 부탁드리겠습니다.

Quarterly버튼을 클릭하고 나서의 http를 어떻게 접근할 수 있을까요?

 

미리 감사합니다

신고
스크랩
공유
전체 1

  • 2024-07-16 21:33

    @박진호 님 SeliniumBasic을 이용해서 WebDriver를 구동해서 사용할 때에
    특정 element에서 click하고 조회되는 내용을 스크랩하는 예입니다.

        With WD
            If vUser(3) = "AA" Then .Get "https://www.someserver.co.kr/ca_title.php" Else GoTo EXIT_RUN
            On Error GoTo 0
            .FindElementById("s_class").AsSelect.SelectByText (IIf(vUser(6) = "전체", vUser(5), vUser(6))) 
            .FindElementByName("special").AsSelect.SelectByText (vUser(7)) 
            .FindElementByName("scale").AsSelect.SelectByText ("100") 
            Set oNODEs = .FindElementsByClass("btn_box_s")
            For Each oNODE In oNODEs
              If oNODE.TagName = "input" Then <strong><span style="color: #0000ff;">oNODE.Click</span></strong>
            Next oNODE
     
            On Error Resume Next 
            Set oNODE = .FindElementByClass("no_print")  
     
            Set oNODE = .FindElementByClass("f13") 
            iCnt = oNODE.Text
            iCnt = Replace(Mid(iCnt, InStr(1, iCnt, ":") + 1), "건)", "")
            iCnt = CLng(iCnt)
     
            ReDim vD(1 To iCnt + 1, 1 To 14) 
            If iCnt > 100 Then
                Set oNODE = .FindElementByClass("pagn")
                sHref = oNODE.FindElementByTag("a").Attribute("href")
            End If
     
            Do While p < iCnt
                ChangeProgress Int(p * 100 / iCnt)
                ChangeProgressDescription p & "/" & iCnt & " " & vUser(3) & "자료를 조회중입니다."
     
                Set trs = .FindElementsById("list_body")(1).FindElementsByTag("tr")
                R = 0
                For Each tr In trs
                    R = R + 1
                    c = 0
                    ChangeProgress Int((p + R) * 100 / iCnt)
                    ChangeProgressDescription p + R & "/" & iCnt & " " & vUser(3) & "자료를 조회중입니다."
                    ReDim vT(1 To 8)
                    For Each td In tr.FindElementsByTag("td")
                        c = c + 1
                        vT(c) = td.Text 
                    Next td
                    On Error Resume Next
                    vD(p + R, 1) = vUser(3)
                    vD(p + R, 2) = Split(vT(3), Chr(10))(1)
                    vD(p + R, 3) = Split(vT(3), Chr(10))(0)
                    vD(p + R, 4) = Split(vT(4), Chr(10))(0)
                    vD(p + R, 5) = Trim(Split(REGEXEXTRACT(vT(4), "\d*,*\d*.\d*㎡"), "㎡")(0))   '"\s\d*.\d*㎡"
                    vD(p + R, 6) = Split(vT(5), Chr(10))(0)
                    vD(p + R, 7) = Split(vT(5), Chr(10))(1)
                    vD(p + R, 8) = Replace(vT(6), Chr(10), "")
                    On Error GoTo 0
                Next tr
                p = p + 100
                If p < iCnt Then sHref = Left(sHref, InStr(1, sHref, "start=", vbTextCompare) + 5) & p
                If p < iCnt Then .Get sHref
                Range("A10").Resize(UBound(vD, 1), UBound(vD, 2)) = vD
            Loop
        End With

     


전체 16,931
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (290)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 844312
오빠두엑셀 2022.02.03 554 844312
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 304 | 조회 31512
오빠두엑셀 2021.10.28 304 31512
74604 문서서식
New 간트차트 조건부서식 이용 문의 엑셀파일첨부파일 (1)
배고픈짐승 | 2024.10.30 | 추천 0 | 조회 31
배고픈짐승 2024.10.30 - 31
74599 함수/공식
New 이런 경우에는 무슨 함수를 써야할까요..? (2)
iwnqn | 2024.10.30 | 추천 0 | 조회 39
iwnqn 2024.10.30 - 39
74598 문서서식
New 엑셀 유효성 검사 뛰어 쓰기 문제 엑셀파일 (2)
퉁퉁이 | 2024.10.30 | 추천 0 | 조회 33
퉁퉁이 2024.10.30 - 33
74592 함수/공식
New 여러 값들 중에서 원하는 값을 찾고 싶어요 도와주세요! 첨부파일 (6) 답변완료
저도해볼게요 | 2024.10.30 | 추천 0 | 조회 52
저도해볼게요 2024.10.30 - 52
74589 구글시트
New 한셀에 줄바꿈으로 있는 여러데이터를 한셀에 한데이터 들어가게끔 일괄로 하고 싶습니다 첨부파일 (4) 답변완료
스톤스톤 | 2024.10.30 | 추천 0 | 조회 42
스톤스톤 2024.10.30 - 42
74585 VBA
New UserForm 크기질문 첨부파일 (4) 답변완료
땡이 | 2024.10.30 | 추천 0 | 조회 55
땡이 2024.10.30 - 55
74583 함수/공식
New XLOOKUP 함수의 다중조건을 잘 모르겠습니다 첨부파일 (4)
qlcc**** | 2024.10.30 | 추천 0 | 조회 56
qlcc**** 2024.10.30 - 56
74582 함수/공식
New filter 함수에 대해 문의드립니다 (5)
김은상 | 2024.10.30 | 추천 0 | 조회 56
김은상 2024.10.30 - 56
74581 구글시트
New 구글폼 견적서 자동화 관련, 폼에서 입력된 이미지 파일을 견적서에 넣는 방법 좀 알려주시면 감사하겠습니다.
| 2024.10.30 | 추천 0 | 조회 41
2024.10.30 - 41
74572 차트/그래프
New 꺽은선 그래프의 레이블이 원복이 됩니다. 첨부파일 (3)
구리구리이 | 2024.10.30 | 추천 0 | 조회 47
구리구리이 2024.10.30 - 47
74570 함수/공식
New 배수 금액으로 순번 정하기 알려 주세요...ㅠ 엑셀파일첨부파일 (3)
서기 | 2024.10.30 | 추천 0 | 조회 42
서기 2024.10.30 - 42
74566 함수/공식
New 두개의 열에 입력된 데이터를 순서 바꿔서 입력으로 중복일 때 골라내는 법 엑셀파일첨부파일 (1)
문과적남자 | 2024.10.30 | 추천 0 | 조회 46
문과적남자 2024.10.30 - 46
74564 함수/공식
New 각 열별로 합 구하는 방법 첨부파일 (1)
라핼 | 2024.10.30 | 추천 0 | 조회 59
라핼 2024.10.30 - 59
74563 함수/공식
New 필터 적용시 중복값 제외 카운트 되는 법 좀 알려주세요 ㅠㅠ 첨부파일 (1)
정재욱 | 2024.10.30 | 추천 0 | 조회 65
정재욱 2024.10.30 - 65
74558 함수/공식
New 문자와 숫자가 섞여있는 열의 합계와 평균을 구하는 방법을 알려주세요!! 첨부파일 (9)
침착해 | 2024.10.30 | 추천 0 | 조회 67
침착해 2024.10.30 - 67
74556 함수/공식
New 세트상품 마진율 구하기 (2)
ek02 | 2024.10.30 | 추천 0 | 조회 54
ek02 2024.10.30 - 54
74543 기능/도구
New 문자와 숫자 혼합된 셀에서 숫자만 따로 따올수 있는 기능이 있을까요? 첨부파일 (3)
야만용사 | 2024.10.29 | 추천 0 | 조회 91
야만용사 2024.10.29 - 91
74542 기능/도구
New 엑셀 백분율 숫자로변경 (3)
rarara | 2024.10.29 | 추천 0 | 조회 79
rarara 2024.10.29 - 79
74540 함수/공식
New ★데이터 가공★ 잘못된 데이터를 올바른 데이터로 변환하는 과정을 도와주세요 ㅠㅠ 엑셀파일첨부파일 (10)
| 2024.10.29 | 추천 0 | 조회 113
2024.10.29 - 113
74539 함수/공식
New 안녕하세요 INDEX, MATCH 다중조건 질문드립니다! 엑셀파일 (3)
gys**** | 2024.10.29 | 추천 0 | 조회 88
gys**** 2024.10.29 - 88
74533 함수/공식
New 산출집계시트에 항목을 산출서에서 가져오고싶어요 엑셀파일 (3)
Moto | 2024.10.29 | 추천 0 | 조회 83
Moto 2024.10.29 - 83
74532 문서서식
New [질문] 전체 행 또는 열을 선택 후 특정 셀만 선택 제외 시키기 첨부파일 (2)
ViVaViva | 2024.10.29 | 추천 0 | 조회 74
ViVaViva 2024.10.29 - 74
74530 함수/공식
New Lookup 함수 오류에 관한 문의 엑셀파일첨부파일 (6) 답변완료
TMOH | 2024.10.29 | 추천 0 | 조회 87
TMOH 2024.10.29 - 87
74528 함수/공식
New 다중조건 만족하는 결과를 가져오고싶습니다 도와주세요 ㅠㅠ 엑셀파일첨부파일 (7)
말하지마00 | 2024.10.29 | 추천 0 | 조회 92
말하지마00 2024.10.29 - 92
74526 함수/공식
New 열과 행으로 정렬된 데이터를 같은 행으로 표시하려고 합니다. 엑셀파일 (2) 답변완료
깐부 | 2024.10.29 | 추천 0 | 조회 75
깐부 2024.10.29 - 75
74521 함수/공식
New B시트에서 A시트 항목 제품 및 수량 가져오는법좀 부탁드려요 첨부파일 (2)
Moto | 2024.10.29 | 추천 0 | 조회 77
Moto 2024.10.29 - 77
74520 VBA
New VBA 런타임 오류 관련 질문 첨부파일 (1)
angelriun | 2024.10.29 | 추천 0 | 조회 59
angelriun 2024.10.29 - 59
74518 함수/공식
New 두 시트에서 교집합 찾기 (3)
우파루파 | 2024.10.29 | 추천 0 | 조회 85
우파루파 2024.10.29 - 85
74516 구글시트
New 렌덤으로 배치 할수 있는 방법이 있을까요? 첨부파일 (8)
피망이 | 2024.10.29 | 추천 0 | 조회 74
피망이 2024.10.29 - 74
74513 함수/공식
New 엑셀로 명리를 정리하던 중에.. 엑셀파일 (8)
Ballad | 2024.10.29 | 추천 0 | 조회 102
Ballad 2024.10.29 - 102