khanhvinhdai1
Thành viên mới

- Tham gia
- 21/3/19
- Bài viết
- 8
- Được thích
- 0
Mn giúp mình xuất dữ liệu từ trang web sang excel (Trang kết qảu xổ số minh Ngoc sang excel)
Trước đây mình từng lấy dữ liệu ở trang này bằng code VBA rồi, định dạng bảng không thống nhất nên rất khó sắp xếp đúng thứ tự khi đưa vào sheet, không biết giờ web có thay đổi gì không.Mn giúp mình xuất dữ liệu từ trang web sang excel (Trang kết qảu xổ số minh Ngoc sang excel)
Trước đây mình từng lấy dữ liệu ở trang này bằng code VBA rồi, định dạng bảng không thống nhất nên rất khó sắp xếp đúng thứ tự khi đưa vào sheet, không biết giờ web có thay đổi gì không.
Sub GetXoSoMB()
Dim HttpRequest As Object
Dim url As String
Dim html As Object
Dim objClass As Object
Dim DataRaw As Object
Dim prizeClasses As Variant
Dim results As Object
Dim result As Object
Dim i As Integer, j As Integer
Set HttpRequest = CreateObject("MSXML2.ServerXMLHTTP.6.0")
Dim kdate As Date
If Hour(Now()) > 18 Then
kdate = Now()
Else
kdate = Now() - 1
End If
url = "https://www.minhngoc.net/ket-qua-xo-so/mien-bac/" & Format(kdate, "dd-mm-yyyy") & ".html"
'& Day(kdate) & "-" & Month(kdate) & "-" & Year(kdate) & ".html"
HttpRequest.Open "GET", url, False
HttpRequest.send
' Load HTML
Set html = CreateObject("HTMLFile")
html.body.innerHTML = HttpRequest.responseText
For Each objClass In html.getElementsByTagName("div")
If objClass.className = "box_kqxs" Then
Set DataRaw = objClass
Exit For
End If
Next objClass
If DataRaw Is Nothing Then
MsgBox "No Data!", vbExclamation
Exit Sub
End If
prizeClasses = Array("giaidb", "giai1", "giai2", "giai3", "giai4", "giai5", "giai6", "giai7")
Dim resultsArray() As String
ReDim resultsArray(UBound(prizeClasses))
For i = LBound(prizeClasses) To UBound(prizeClasses)
For Each result In DataRaw.getElementsByTagName("td")
If result.className = prizeClasses(i) Then
resultsArray(i) = result.innerText
End If
Next result
Next i
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("XoSoMB")
ws.Range("A1").Value = "ngay"
ws.Range("A2").Value = Format(kdate, "dd/mm/yyyy")
ws.Range("B1").Resize(1, 8) = prizeClasses
ws.Range("B2").Resize(1, 8) = resultsArray
MsgBox "LoadDone!", vbInformation
End Sub
Bạn tham khảo thử nhé.
PHP:Sub GetXoSoMB() Dim HttpRequest As Object Dim url As String Dim html As Object Dim objClass As Object Dim DataRaw As Object Dim prizeClasses As Variant Dim results As Object Dim result As Object Dim i As Integer, j As Integer Set HttpRequest = CreateObject("MSXML2.ServerXMLHTTP.6.0") Dim kdate As Date If Hour(Now()) > 18 Then kdate = Now() Else kdate = Now() - 1 End If url = "https://www.minhngoc.net/ket-qua-xo-so/mien-bac/" & Format(kdate, "dd-mm-yyyy") & ".html" '& Day(kdate) & "-" & Month(kdate) & "-" & Year(kdate) & ".html" HttpRequest.Open "GET", url, False HttpRequest.send ' Load HTML Set html = CreateObject("HTMLFile") html.body.innerHTML = HttpRequest.responseText For Each objClass In html.getElementsByTagName("div") If objClass.className = "box_kqxs" Then Set DataRaw = objClass Exit For End If Next objClass If DataRaw Is Nothing Then MsgBox "No Data!", vbExclamation Exit Sub End If prizeClasses = Array("giaidb", "giai1", "giai2", "giai3", "giai4", "giai5", "giai6", "giai7") Dim resultsArray() As String ReDim resultsArray(UBound(prizeClasses)) For i = LBound(prizeClasses) To UBound(prizeClasses) For Each result In DataRaw.getElementsByTagName("td") If result.className = prizeClasses(i) Then resultsArray(i) = result.innerText End If Next result Next i Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("XoSoMB") ws.Range("A1").Value = "ngay" ws.Range("A2").Value = Format(kdate, "dd/mm/yyyy") ws.Range("B1").Resize(1, 8) = prizeClasses ws.Range("B2").Resize(1, 8) = resultsArray MsgBox "LoadDone!", vbInformation End Sub