2017-10-17 4 views
-2

VBA 웹 스크랩을 사용하여 Met Office 웹 사이트에서 런던의 야간 최저 기온을 낮추려고합니다. 난 코드 here 게시로 사용하려고했습니다. 코드가 실행되는 동안 복사가 필요한 것은 복사되지 않습니다. 도움을 많이 주시면 감사하겠습니다.vba를 사용하여 웹 사이트에서 데이터 스크랩 4

Sub WebScrape_1() 

'Create an Internet Explorer browser 
Dim appIE As Object 
Set appIE = CreateObject("internetexplorer.application") 

'Browse the browser to the target webpage 
With appIE 
    .Navigate "https://www.metoffice.gov.uk/public/weather/forecast/gcpvj0v07" 
    .Visible = True ' False activate when happly with code 
End With 

'Wait while loading 
Do While appIE.Busy 
    DoEvents 
Loop 

'What aspect of the webpage to copy 
Set allRowOfData = appIE.document.getElementById("nightValue0") 

Dim myValue As String: myValue = allRowOfData.innerHTML 

'Close the browser 
appIE.Quit 
Set appIE = Nothing 

'Paste the data into the selected range 
ActiveWorkbook.Sheets("Data_Temp").Range("C7").Value = myValue 

End Sub 
+3

는'더 luck' 문제의 모든 종류를 설명하지 않습니다를 ... 난 여기 사람이 그 – jsotola

+1

이 @jsotola에 동의 무엇을 의미하는지 짐작 시간을 낭비 할 것이라고 생각하지 않습니다. 결과가 있습니까? 잘못된 결과? 결과가 없습니까? 오류 메시지? 코드를 실행할 때 일어나는 일에 대해 더 많은 정보를 제공해야합니다. – freginold

+0

질문을 약간 업데이트했습니다. 내 코드가 웹 페이지의 관련 섹션을 복사하는 방법을 모릅니다. – Karm

답변

2

쉬운 질문입니다. 죄송합니다.이 커뮤니티에는 무례한 회원이 있습니다.

"FirstChild"와 "innertext"를 코드에 추가하기 만하면됩니다. 내가 당신이라면, 코드를 "로드하는 동안 기다리는 중"부분에서 다르게 작성합니다. 그것을하는 효과적인 방법이 아닙니다. 어쨌든, 아래에 작업 코드를 찾을 수 :

Sub WebScrape_1() 

'Create an Internet Explorer browser 
Dim appIE As Object 
Set appIE = CreateObject("internetexplorer.application") 

'Browse the browser to the target webpage 
With appIE 
    .Navigate "https://www.metoffice.gov.uk/public/weather/forecast/gcpvj0v07" 
    .Visible = True ' False activate when happly with code 
End With 

'Wait while loading 
Do While appIE.Busy 
    DoEvents 
Loop 

'What aspect of the webpage to copy 
Set allrowofdata = appIE.document.getElementById("nightValue0").FirstChild 
allrowofdata = allrowofdata.innertext 

'Close the browser 
appIE.Quit 
Set appIE = Nothing 

'Paste the data into the selected range 
ActiveWorkbook.Sheets("Sheet1").Range("C7").Value = myValue 

End Sub 
+1

그것은 무례하다는 것에 관한 것이 아니라,이 사이트의 목적 인 OP - *뿐만 아니라 다른 사람들에게 유용한 명확한 질문을 요구하는 것입니다. Stack Overflow는 "도움말 ** ME ** 디버그가 아닙니다 ** ** MY * * 코드 "사이트. 당신은 이미 알고 있어야합니다 - 나는 당신이 [둘러보기]를 찍었고 전에 읽었을 것이라고 확신합니다? 1 명의 담당자와 2 개월의 역사로 당신은 당신 자신에게 그 메타 - ranting을 지킬 수있었습니다. –

+0

Thaks @rlemmi 내가 사무실에있을 때 내일 다시 시도해 보겠습니다. – Karm

+0

당신을 환영합니다! 제목을 좀 더 의미있는 것으로 변경하는 것을 잊지 마시기 바랍니다. @ Mat'sMug 불쾌한 점을 사과드립니다. 나는 단지 신입 회원들에게 예의를 준 것은 좋은 것이라고 생각합니다. 좋은 지역 사회를 육성하고 싶습니다. 귀하와 귀하의 1,000+ 등급은 지금까지이를 알고 있어야합니다. 제목이나 질문을 여러 가지 더 나은 방법으로 변경하도록 요청했을 수 있습니다. 다음에 "Please"또는 "Thank you"라는 단어를 사용하십시오. 나는 1 명의 담당자와 2 달의 역사를 가진이 사용자가 당신에게 무언가를 가르쳐 줄 수 있었으면 좋겠다. :). –

관련 문제