Chcę zeskrobić wpisy w Ta tabela. Najwyraźniej znajduje się JavaScript po obciążeniu strony, więc zamiast skrobania (z czymś w rodzaju WebDriver), chciałbym bezpośrednio poprosić o dane z dowolnej usługi, z którym mówi JavaScript.

Używanie karty sieciowej Chrome Dev Tools ', pomyślałem, że zawęziłem go do xhr POST do https://www.oregon.gov/oha/ERD/_vti_bin/client.svc/ProcessQuery, ale pokazana odpowiedź nie wygląda na powiązania, a żadna z pozostałych elementów sieciowych wydaje się być albo.

Jak dokładnie śledzić, na jakiej prośbie wypełnia tabelę?

0
user1441998 18 październik 2020, 03:19

1 odpowiedź

Najlepsza odpowiedź

HTML5 wprowadzono Web-Storage, które, takie jak pliki cookie, przechowywania danych lokalnie. Może to zapobiec żądania danych po pierwszym załadowaniu witryny. W narzędziach Chrome Dev, przejdź do zakładki application, i pod storage, szukaj klucza, który ma żądane dane. Jeśli tam jest, możesz wyczyścić pamięć, odświeżyć, a następnie zobaczysz albo xhr lub fetch [1] żądanie w zakładce network, która otrzymała dane. Możesz kliknąć prawym przyciskiem myszy żądanie i skopiuj go jako polecenie curl, aby poprosić o dane bezpośrednio bez skrobania. Możesz się martwić, że usługa uniemożliwi dostęp do spoza jego zatwierdzonego frontu Web End, ale cors nie może cię powstrzymać, ponieważ dotyczy tylko przeglądarek.

[1] fetch jest ulepszonym { {X1}} Dostępne od 2015

Dziękuję @sideshowbarker za wskazanie mnie do sessionStorage i odpowiadanie na moje cors.

1
user1441998 18 październik 2020, 11:31