Napisałem skrobak w vba, aby przetworzyć niektóre informacje o filmie z witryny torrent. Użyłem IE
i queryselector
do wykonania zadania. Kiedy wykonuję mój kod, parsuje wszystko wraz z pojawieniem się błędu. Wygląda na to, że błąd pojawia się znikąd, zamiast kontynuować. Jeśli anuluję okno błędu, wówczas mogę zobaczyć wyniki. Przesłałem dwa zdjęcia poniżej, aby pokazać ci błędy, które mam. Jak mogę pomyślnie wykonać kod bez żadnych błędów? Z góry dziękuję.Moja skrobak zgłasza błędy zamiast opuścić przeglądarkę, gdy wszystko jest gotowe.
Oto pełny kod:
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
Błędy mam:
Oba błędy pojawiają się w tym samym czasie. Używam przeglądarki Internet Explorer 11.
Z drugiej strony, jeśli spróbuję poniżej, wyniki zostaną pomyślnie zakończone bez żadnych problemów.
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
referencyjny Dodałem do biblioteki:
1. Microsoft Internet Controls
2. Microsoft HTML Object Library
Więc co jest nie tak z queryselector
lub co mi brakuje tu aby przejść pomyślnie? Czy jest jakaś wzmianka o dodawaniu do biblioteki, aby pozbyć się błędów?
Szybkie sprawdzenie: czy zmiana 'queryselector' na' querySelector' powoduje jakąkolwiek różnicę w pierwszym przykładzie kodu? – alecxe
Nie, proszę pana, bez zmian. W rzeczywistości, jeśli spróbuję napisać 'querySelector', automatycznie powróci on do małej litery, która jest' queryselector'. – SIM
Dobrze, spróbuj tego: zamiast wykonywania 'post.queryselector' po prostu wykonaj' post.innerText' bezpośrednio. To nie jest to, co chciałeś zrobić, ale eksperymentujmy. Czy widzisz ten sam błąd? Dzięki. – alecxe