2010-03-26 7 views

답변

1

위의 응답에 그냥 추가 :

다음은 주어진 URL의 내용을 표시하는 코드입니다. 질문은 명시된 대답이 실제로 제공하지 않는 HTML 소스를 얻는 방법이었습니다.

"http://finance.yahoo.com/q/op?s=T+Options"URL의 브라우저에서 oXMLHTTP.responseText의 내용과 브라우저의 소스 코드를 비교하십시오. 일치하지 않아 반환 값이 다릅니다. (거래일 동안 변경을 피하기 위해 시간이 지나면 실행해야합니다.)

이 작업을 수행하는 방법을 찾으면 기본 코드가 게시됩니다.

7

예. 이를 수행하는 한 가지 방법은 MSXML dll을 사용하는 것입니다. 이렇게하려면 Tools-> References를 통해 "Microsoft XML"라이브러리에 대한 참조를 추가해야합니다.

Public Sub ShowHTML(ByVal strURL) 

    On Error GoTo ErrorHandler 

    Dim strError As String 
    strError = "" 

    Dim oXMLHTTP As MSXML2.XMLHTTP 
    Set oXMLHTTP = New MSXML2.XMLHTTP 

    Dim strResponse As String 
    strResponse = "" 

    With oXMLHTTP 

     .Open "GET", strURL, False 

     .send "" 

     If .Status <> 200 Then 
      strError = .statusText 
      GoTo CleanUpAndExit 
     Else 

      If .getResponseHeader("Content-type") <> "text/html" Then 
       strError = "Not an HTML file" 
       GoTo CleanUpAndExit 
      Else 
       strResponse = .responseText 
      End If 

     End If 

    End With 


CleanUpAndExit: 

    On Error Resume Next ' Avoid recursive call to error handler 

    ' Clean up code goes here 

    Set oXMLHTTP = Nothing 

    ' Report any error 

    If Len(strError) > 0 Then 
     MsgBox strError 
    Else 
     MsgBox strResponse 
    End If 

    Exit Sub 


ErrorHandler: 

    strError = Err.Description 

    Resume CleanUpAndExit 

End Sub 
+0

InStr (.getResponseHeader ("Content-type"), "text/html") = 0 그러면 "text/html"테스트를 주석 처리해야합니다. 그렇지 않으면 작동하지 않습니다. – ozmike

+1

참고로 "text/html"뿐만 아니라 많은 페이지에 "text/html; charset = UTF-8"이 있습니다. 그래서 더 좋은 코드는 If InStr (.getResponseHeader ("Content-type"), "text/html") = 0입니다. 그러면 작동합니다. – ozmike

+0

이 코드를 사용하는 방법에 대해 안내해주십시오. – Mowgli

관련 문제