Tôi đã viết scraper theo vba để phân tích một số thông tin phim từ một trang web torrent. Tôi đã sử dụng IE
và queryselector
để hoàn thành tác vụ. Khi tôi thực thi mã của mình, nó phân tích cú pháp mọi thứ cùng với lỗi xuất hiện. Dường như lỗi xuất hiện từ hư không thay vì tiếp tục. Nếu tôi hủy bỏ hộp lỗi thì tôi có thể thấy kết quả. Tôi đã tải lên hai hình ảnh dưới đây để hiển thị cho bạn các lỗi tôi đang gặp phải. Làm cách nào tôi có thể thực thi mã thành công mà không gặp bất kỳ lỗi nào? Cảm ơn trước.Trình gỡ rối của tôi ném lỗi thay vì thoát trình duyệt khi mọi thứ được thực hiện
Đây là mã đầy đủ:
Sub Torrent_Data()
Dim IE As New InternetExplorer, html As HTMLDocument
Dim post As Object
With IE
.Visible = False
.navigate "https://yts.am/browse-movies"
Do While .readyState <> READYSTATE_COMPLETE: Loop
Set html = .Document
End With
For Each post In html.querySelectorAll(".browse-movie-bottom")
Row = Row + 1: Cells(Row, 1) = post.queryselector(".browse-movie-title").innerText
Cells(Row, 2) = post.queryselector(".browse-movie-year").innerText
Next post
IE.Quit
End Sub
Các lỗi Tôi đang gặp:
Cả hai lỗi được xuất hiện cùng một lúc. Tôi đang sử dụng Internet Explorer 11.
Mặt khác, Nếu tôi cố gắng như dưới đây, nó sẽ mang lại kết quả thành công mà không gặp vấn đề gì.
Sub Torrent_Data()
Dim IE As New InternetExplorer, html As HTMLDocument
Dim post As Object
With IE
.Visible = False
.navigate "https://yts.am/browse-movies"
Do While .readyState <> READYSTATE_COMPLETE: Loop
Set html = .Document
End With
For Each post In html.getElementsByClassName("browse-movie-bottom")
Row = Row + 1: Cells(Row, 1) = post.queryselector(".browse-movie-title").innerText
Cells(Row, 2) = post.queryselector(".browse-movie-year").innerText
Next post
IE.Quit
End Sub
tham khảo tôi đã thêm vào thư viện:
1. Microsoft Internet Controls
2. Microsoft HTML Object Library
Vì vậy, những gì là sai với queryselector
hoặc những gì tôi đang mất tích ở đây để tạo ra một đi thành công? Có bất kỳ tham chiếu nào để thêm vào thư viện để xóa các lỗi không?
Kiểm tra nhanh: thay đổi 'queryselector' thành' querySelector' có tạo sự khác biệt nào trong mẫu mã đầu tiên không? – alecxe
Không, thưa ông. Trong thực tế, nếu tôi cố gắng viết 'querySelector', nó sẽ tự động quay trở lại chữ thường, đó là' queryselector'. – SIM
Được rồi, hãy thử điều này: thay vì thực hiện 'post.queryselector' chỉ cần thực hiện trực tiếp' post.innerText'. Nó không phải là những gì bạn muốn làm nhưng chúng ta hãy thử nghiệm. Bạn có thấy lỗi giống nhau không? Cảm ơn. – alecxe