이것은 초보자의 멍청한 질문에 속할 수 있습니다. 하지만 솔직히 VBA에서 어디서부터 시작해야할지 모르겠습니다. 나는 내가하려는 사이트에서 데이터를 가져 오려고 웹에서 몇 가지 다른 접근 방식을 시도했지만 모두 비참하게 실패했습니다. 누군가가이 웹 사이트에서 데이터를 가져 오는 방법을 알려줄 수 있습니까?
https://rotogrinders.com/projected-stats/nfl?site=fanduel
데이터-> 가져 오기도 할 수 없습니다. 여기 내가 지금까지 가지고있는 것입니다. 나는 t = 0 To (Table.Length-1) 동안 줄에 계속 붙어 있습니다.
Sub test1()
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
Dim Table As Object
Dim t As Integer
Dim r As Integer
Dim c As Integer
With appIE
.Navigate "https://rotogrinders.com/projected-stats/nfl?site=fanduel"
.Visible = True
End With
Do While appIE.Busy
DoEvents
Loop
Set Table = appIE.document.getElementById("proj-stats")
For t = 0 To (Table.Length - 1)
For r = 0 To (Table(t).Rows.Length - 1)
For c = 0 To (Table(t).Rows(r).Cells.Length - 1)
ThisWorkbook.Worksheets(1).Cells(r + 1, c + 1) = Table(t).Rows(r).Cells(c).innerText
Next c
Next r
Next t
appIE.Quit
Set appIE = Nothing
End Sub
당신은 가깝고 데이터를 얻는 여러 가지 방법이 있습니다. 모든 행 요소 (HTML <TD>
) 를 추출 하고 간단한 루프를 통과하도록 선택했습니다 . 6 개의 열이 있기 때문에 두 개의 변수 ( 행과 열의 경우 r
& c
)를 사용하여 데이터를 올바르게 형식화합니다.
Set Table = appIE.document.getElementsbytagname("td")
r = 0
c = 0
For Each itm In Table
Worksheets(1).Range("A1").Offset(r, c).Value = itm.innertext
c = c + 1
If c Mod 6 = 0 Then
r = r + 1
c = 0
End If
Next itm
결과 예 :
마지막으로, 스크립트가 실행되기 전에 브라우저가로드를 완료하지 않은 경우가 있습니다. 루프 전에 중단 점을 사용하여 속이고로드 될 때까지 기다린 다음 F5 키를 눌러 코드가 항상 실행되는지 확인합니다. .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다