2013-07-31 20 views
11

Jestem początkującym programistą w Internecie i ostatnio zaczęłam korzystać z Pythona do automatyzacji niektórych procesów ręcznych. Próbuję zalogować się do witryny, kliknąć niektóre menu rozwijane, aby wybrać ustawienia i uruchomić raport.Korzystanie z biblioteki zapytań Pythona do poruszania się po stronach internetowych/przycisków kliknięcia

Znalazłem uznaną bibliotekę żądań: http://docs.python-requests.org/en/latest/user/advanced/#request-and-response-objects i próbowałem dowiedzieć się, jak z niej korzystać.

Mam pomyślnie zalogować się używając odpowiedź bpbp na tej stronie: How to use Python to login to a webpage and retrieve cookies for later usage?

Moje rozumienie „kliknięcie” przycisk jest napisać post() polecenie, które naśladuje kliknięcie: Python - clicking a javascript button

Moje pytanie (ponieważ jestem początkującym programistą webowym i tą biblioteką), w jaki sposób chciałbym pobierać dane, których potrzebuję, aby dowiedzieć się, jak utworzyć te polecenia. Zajrzałem do [RequestObject] .headers, .text, itp. Wszelkie przykłady byłyby świetne.

Jak zawsze, dziękuję za pomoc!

EDYTOWANIE ::: Aby to pytanie było bardziej konkretne, mam problemy z interakcją z różnymi aspektami strony internetowej. Poniższy rysunek pokazuje, co ja rzeczywiście próbuje zrobić:

Example

jestem na stronie internetowej, która wygląda tak. Jest rozwijane menu z możliwymi do kliknięcia datami, które można zmienić. Moim celem jest zautomatyzowanie zmiany daty na najnowszą datę, "kliknij", "Zapisz i uruchom" i pobierz raport po zakończeniu.

+0

Nie miałem zbyt dużego kierunku, by wypróbować różne rzeczy. Zrobiłem edycję postu z bardziej konkretnym pomysłem na to, co próbuję zrobić - więc nie sądzę, że to po prostu dobry parser do wyodrębniania HTML, ale jak "publikować" różne informacje na stronie, aby osiągnąć różne zadania, szczególnie "klikanie" zadań – so13eit

+0

sprawdź [selenium] (https://pypi.python.org/pypi/selenium), jeśli na stronach, które próbujesz zaindeksować, znajduje się skrypt javascript. – djas

+0

Jednym z możliwych workflow dla takiego procesu jest załadowanie żądanej strony (za pomocą requests.get()), wykrycie wszelkich dynamicznych elementów formularza, które musisz pobrać ze strony, a następnie użycie request.post() w celu przesłania potrzebne informacje. Używanie narzędzi programistycznych przeglądarki może być niezwykle cenne, aby dokładnie zobaczyć, co jest wysyłane w żądaniu POST. – brechin

Odpowiedz

7

Jedynym rozwiązaniem tego problemu jest Selenium. Gdyby nie była to ciężka strona javascript, mogłabyś spróbować mechanize, ale do tego musisz renderować javascript, a następnie wstrzykiwać javascript ... tak jak robi to Selenium.

Upside: Możesz nagrywać akcje w Firefoksie (używając selenu), a następnie eksportować te akcje do Pythona. Minusem jest to, że ten kod musi otworzyć okno przeglądarki, aby uruchomić.