W tym artykule pokaże, jak skonfigurować selen na dystrybucji Linux (i.mi., Ubuntu), a także sposób wykonywania podstawowej automatyzacji sieci i złomowania sieci za pomocą biblioteki Selenium Python 3.
Wymagania wstępne
Aby wypróbować polecenia i przykłady użyte w tym artykule, musisz mieć następujące czynności:
1) Dystrybucja Linux (najlepiej Ubuntu) zainstalowana na komputerze.
2) Python 3 zainstalowany na komputerze.
3) PIP 3 zainstalowany na komputerze.
4) Przeglądarka internetowa Google Chrome lub Firefox zainstalowana na komputerze.
W Linuxhint można znaleźć wiele artykułów na te tematy.com. Pamiętaj, aby sprawdzić te artykuły, jeśli potrzebujesz dalszej pomocy.
Przygotowanie wirtualnego środowiska Python 3 do projektu
Wirtualne środowisko Pythona służy do stworzenia izolowanego katalogu projektu Python. Moduły Pythona, które instalujesz za pomocą PIP, zostaną zainstalowane tylko w katalogu projektu, a nie na całym świecie.
Python Virtualenv Moduł służy do zarządzania wirtualnymi środowiskami Python.
Możesz zainstalować Python Virtualenv moduł globalnie za pomocą PIP 3, w następujący sposób:
$ sudo pip3 instaluj VirtualenvPIP3 pobiera i globalnie zainstaluje wszystkie wymagane moduły.
W tym momencie Python Virtualenv Moduł powinien być instalowany na całym świecie.
Utwórz katalog projektu Python-solen-basic/ W obecnym katalogu roboczym, w następujący sposób:
$ mkdir -pv python-solenum-basic/kierowcyPrzejdź do nowo utworzonego katalogu projektu Python-solen-basic/, następująco:
$ CD Python-Selenium-Basic/Utwórz wirtualne środowisko Python w katalogu projektu za pomocą następującego polecenia:
$ Virtualenv .EnvWirtualne środowisko Python powinno być teraz utworzone w katalogu projektu.'
Aktywuj wirtualne środowisko Python w katalogu projektu za pomocą następującego polecenia:
$ źródło .env/bin/aktywujJak widać, wirtualne środowisko Python jest aktywowane dla tego katalogu projektu.
Instalowanie biblioteki Selenium Python
Biblioteka Selenium Python jest dostępna w oficjalnym repozytorium Python Pypi.
Możesz zainstalować tę bibliotekę za pomocą PIP 3, w następujący sposób:
$ PIP3 instaluj selenBiblioteka Selenium Python powinna być teraz zainstalowana.
Teraz, gdy zainstalowana jest biblioteka Selenium Python, następną rzeczą, którą musisz zrobić, jest zainstalowanie sterownika internetowego dla ulubionej przeglądarki internetowej. W tym artykule pokażę, jak zainstalować sterowniki internetowe Firefox i Chrome dla selenu.
Instalowanie sterownika Gecko Firefox
Sterownik Gecko Firefox pozwala kontrolować lub automatyzować przeglądarkę internetową Firefox za pomocą selenu.
Aby pobrać sterownik Gecko Firefox, odwiedź stronę Mozilla/Geckodriver z przeglądarki internetowej GitHub z przeglądarki internetowej.
Jak widać, v0.26.0 to najnowsza wersja sterownika Gecko Firefox w momencie napisania tego artykułu.
Aby pobrać sterownik Gecko Firefox, przewiń trochę w dół i kliknij Tar Linux Geckodriver.Archiwum GZ, w zależności od architektury systemu operacyjnego.
Jeśli używasz 32-bitowego systemu operacyjnego, kliknij Geckodriver-V0.26.0-linux32.smoła.GZ połączyć.
Jeśli używasz 64-bitowego systemu operacyjnego, kliknij Geckodriver-V0.26.0-Linuxx64.smoła.GZ połączyć.
W moim przypadku pobram 64-bitową wersję sterownika Firefox Gecko.
Twoja przeglądarka powinna skrócić cię do zapisania archiwum. Wybierać Zapisz plik a następnie kliknij OK.
Archiwum sterownika Gecko Firefox powinno zostać pobrane w ~/Pobieranie informator.
Wyodrębnij Geckodriver-V0.26.0-Linux64.smoła.GZ archiwum z ~/Pobieranie katalog do kierowcy/ Katalog twojego projektu, wprowadzając następujące polecenie:
$ tar -xzf ~/pobrań/geckodriver -v0.26.0-Linux64.smoła.sterowniki GZ -C/
Po wyodrębnianiu archiwum sterownika Gecko Firefox, nowy Geckodriver plik binarny powinien być utworzony w kierowcy/ katalog twojego projektu, jak widać na zrzucie ekranu poniżej.
Testowanie selenium Firefox Gecko Driver
W tej sekcji pokażę, jak skonfigurować swój pierwszy skrypt selenium Python, aby sprawdzić, czy sterownik Gecko Firefox działa.
Najpierw otwórz katalog projektu Python-solen-basic/ z Twoim ulubionym IDE lub redaktorem. W tym artykule użyję kodu Visual Studio.
Utwórz nowy skrypt Python Ex01.py, i wpisz następujące wiersze w skrypcie.
od selenu importu WebdriverPo zakończeniu zapisz Ex01.py Skrypt Pythona.
Wyjaśnię kod w późniejszej sekcji tego artykułu.
Poniższy wiersz konfiguruje selen do użycia sterownika gecko Firefox z kierowcy/ katalog twojego projektu.
Aby sprawdzić, czy sterownik Gecko Firefox współpracuje z Selenium, uruchom następujące Ex01.py Python Script:
$ Python3 Ex01.pyPrzeglądarka internetowa Firefox powinna automatycznie odwiedzić Google.com i zamknij się po 5 sekundach. Jeśli tak się stanie, wówczas sterownik Gecko Gecko Selenium działa poprawnie.
Instalowanie Chrome Web Sterownik
Chrome Web Sterownik umożliwia kontrolę lub automatyzację przeglądarki internetowej Google Chrome za pomocą selenu.
Musisz pobrać tę samą wersję Chrome Web Sterownik, co wersja przeglądarki Google Chrome.
Aby znaleźć numer wersji swojej przeglądarki internetowej Google Chrome, odwiedź Chrome: // Ustawienia/pomoc w Google Chrome. Numer wersji powinien być w O Chrome sekcja, jak widać na zrzucie ekranu poniżej.
W moim przypadku numer wersji to 83.0.4103.116. Pierwsze trzy części numeru wersji (83.0.4103, w moim przypadku) musi pasować do pierwszych trzech części numeru wersji Chrome Web Driver.
Aby pobrać sterownik internetowy Chrome, odwiedź oficjalną stronę pobierania sterownika Chrome.
w Aktualne wydania Sekcja, Chrome Web Sterownik dla najbardziej aktualnych wydań przeglądarki internetowej Google Chrome będzie dostępny, jak widać na zrzucie ekranu poniżej.
Jeśli wersja Google Chrome, której używasz Aktualne wydania Sekcja, nieco przewiń w dół i powinieneś znaleźć żądaną wersję.
Po kliknięciu prawidłowej wersji sterownika internetowego Chrome powinno przenieść na następną stronę. Kliknij na Chromedriver_linux64.zamek błyskawiczny link, jak wskazano na zrzucie ekranu poniżej.
Należy teraz pobrać archiwum sterownika internetowego Chrome.
Archiwum sterownika internetowego Chrome powinno być teraz pobrane w ~/Pobieranie informator.
Możesz wydobyć Chromedriver-Linux64.zamek błyskawiczny archiwum z ~/Pobieranie katalog do kierowcy/ Katalog twojego projektu z następującym poleceniem:
$ Unzip ~/Downloads/Chromedriver_linux64.sterowniki zip -d/Po wyodrębnianiu archiwum Chrome Web Sriver, nowy chromedriver plik binarny powinien być utworzony w kierowcy/ katalog twojego projektu, jak widać na zrzucie ekranu poniżej.
Testowanie sterownika internetowego Selenu Chrome
W tej sekcji pokażę ci, jak skonfigurować swój pierwszy skrypt selenium Python, aby sprawdzić, czy chromowany sterownik internetowy działa.
Najpierw stwórz nowy skrypt Python Ex02.py, i wpisz następujące wiersze kodów w skrypcie.
od selenu importu WebdriverPo zakończeniu zapisz Ex02.py Skrypt Pythona.
Wyjaśnię kod w późniejszej sekcji tego artykułu.
Poniższy wiersz konfiguruje selen do korzystania z Chrome Web Sterownik z kierowcy/ katalog twojego projektu.
Aby sprawdzić, czy Chrome Web Sterownik współpracuje z Selenium, uruchom Ex02.py Skrypt Pythona, w następujący sposób:
$ Python3 Ex01.pyPrzeglądarka internetowa Google Chrome powinna automatycznie odwiedzić Google.com i zamknij się po 5 sekundach. Jeśli tak się stanie, wówczas sterownik Gecko Gecko Selenium działa poprawnie.
Podstawy skrobania internetowego za pomocą selenu
Od teraz będę korzystać z przeglądarki internetowej Firefox. Możesz także użyć Chrome, jeśli chcesz.
Podstawowy skrypt selenium Python powinien wyglądać jak skrypt pokazany na zrzucie ekranu poniżej.
Najpierw zaimportuj selen Webdriver z selen moduł.
Następnie zaimportuj Klucze z selen.Webdriver.wspólny.Klucze. Pomoże to wysłać klawiaturę naciśnięcia klawisza do przeglądarki, którą automatyzujesz z selenu.
Następujący wiersz tworzy przeglądarka Obiekt dla przeglądarki internetowej Firefox za pomocą sterownika Gecko Firefox (WebDriver). Możesz kontrolować działania przeglądarki Firefox za pomocą tego obiektu.
Aby załadować stronę internetową lub adres URL (będę załadować stronę internetową https: // www.DuckDuckGo.com), zadzwoń Dostawać() Metoda przeglądarka obiekt na przeglądarce Firefox.
Za pomocą selenu możesz napisać testy, wykonywać złomowanie sieci, a na koniec zamknąć przeglądarkę za pomocą zrezygnować() Metoda przeglądarka obiekt.
Powyżej znajduje się podstawowy układ skryptu selenium Python. Będziesz pisać te linie we wszystkich swoich skryptach selenium Python.
Przykład 1: Drukowanie tytułu strony internetowej
To będzie najłatwiejszy przykład omawiany za pomocą selenu. W tym przykładzie wydrukujemy tytuł strony internetowej, którą będziemy odwiedzić.
Utwórz nowy plik Ex04.py i wpisz w nim następujące wiersze kodów.
od selenu importu WebdriverPo zakończeniu zapisz plik.
Tutaj przeglądarka.tytuł służy do uzyskania dostępu do tytułu odwiedzonej strony internetowej i wydrukować() Funkcja zostanie użyta do wydrukowania tytułu w konsoli.
Po uruchomieniu Ex04.py skrypt, powinien:
1) Otwórz Firefox
2) Załaduj żądaną stronę internetową
3) Przyprzyj tytuł strony
4) Wydrukuj tytuł na konsoli
5) I wreszcie zamknij przeglądarkę
Jak widać, Ex04.py Skrypt ładnie wydrukował tytuł strony internetowej w konsoli.
$ Python3 Ex04.pyPrzykład 2: Drukowanie tytułów wielu stron internetowych
Jak w poprzednim przykładzie, możesz użyć tej samej metody do wydrukowania tytułu wielu stron internetowych za pomocą pętli Python.
Aby zrozumieć, jak to działa, stwórz nowy skrypt Python Ex05.py i wpisz następujące wiersze kodu w skrypcie:
od selenu importu WebdriverPo zakończeniu zapisz skrypt Python Ex05.py.
Tutaj URL Lista zachowuje adres URL każdej strony internetowej.
A Do pętla służy do iteracji przez URL Lista przedmiotów.
Na każdej iteracji selen mówi przeglądarce, aby odwiedziła URL i uzyskaj tytuł strony internetowej. Po wyodrębnianiu tytułu strony internetowej jest on wydrukowany w konsoli.
Uruchom skrypt Python Ex05.py, i powinieneś zobaczyć tytuł każdej strony internetowej na URL lista.
$ Python3 Ex05.pyTo jest przykład tego, jak Selenium może wykonywać to samo zadanie z wieloma stronami internetowymi lub stronami internetowymi.
Przykład 3: Wyodrębnienie danych ze strony internetowej
W tym przykładzie pokażę podstawy wyodrębnienia danych z stron internetowych za pomocą selenu. Jest to również znane jako skrobanie internetowe.
Najpierw odwiedź losowe.Org Link z Firefox. Strona powinna wygenerować losowy ciąg, jak widać na zrzucie ekranu poniżej.
Aby wyodrębnić losowe dane łańcuchowe za pomocą selenu, musisz także znać reprezentację danych HTML.
Aby zobaczyć, w jaki sposób losowe dane ciągów są reprezentowane w HTML, wybierz dane losowe i naciśnij prawy przycisk myszy (RMB) i kliknij Sprawdź element (Q), Jak wskazano na zrzucie ekranu poniżej.
Reprezentacja danych HTML powinna być wyświetlana w Inspektor Tab, jak widać na zrzucie ekranu poniżej.
Możesz także kliknąć Sprawdź ikonę ( ) Aby sprawdzić dane ze strony.
Kliknij ikonę sprawdzania () i najedź na losowe dane ciągów, które chcesz wyodrębnić. Reprezentacja danych HTML powinna być wyświetlana jak poprzednio.
Jak widać, losowe dane łańcuchowe są owinięte w HTML przed tag i zawiera klasę dane.
Teraz, gdy znamy reprezentację HTML danych, które chcemy wyodrębnić, utworzymy skrypt Pythona do wyodrębnienia danych za pomocą selenu.
Utwórz nowy skrypt Python Ex06.py i wpisz następujące wiersze kodów w skrypcie
od selenu importu WebdriverPo zakończeniu zapisz Ex06.py Skrypt Pythona.
Tutaj przeglądarka.Dostawać() Metoda ładuje stronę internetową w przeglądarce Firefox.
przeglądarka.find_element_by_css_selector () Metoda przeszukuje kod HTML strony w celu uzyskania określonego elementu i zwraca ją.
W takim przypadku element byłby przed.dane, przed tag, który ma nazwę klasy dane.
Poniżej przed.dane element został przechowywany w DataElement zmienny.
Skrypt następnie drukuje treść tekstu wybranego przed.dane element.
Jeśli uruchomisz Ex06.py Python skrypt, powinien wyodrębnić losowe dane ciągów ze strony internetowej, jak widać na zrzucie ekranu poniżej.
$ Python3 Ex06.pyJak widać, za każdym razem, gdy prowadzę Ex06.py Python Script, wyodrębnia inne losowe dane łańcuchowe z strony internetowej.
Przykład 4: Wyodrębnienie listy danych ze strony internetowej
Poprzedni przykład pokazał, jak wyodrębnić pojedynczy element danych ze strony internetowej za pomocą selenu. W tym przykładzie pokażę, jak używać selenium do wyodrębnienia listy danych ze strony internetowej.
Najpierw odwiedź losowo-nazwy generatora.Informacje z przeglądarki internetowej Firefox. Ta strona generuje dziesięć losowych nazw za każdym razem, gdy ponownie załadujesz stronę, jak widać na zrzucie ekranu poniżej. Naszym celem jest wyodrębnienie tych losowych nazw za pomocą selenu.
Jeśli bardziej sprawdzisz listę nazw, możesz zobaczyć, że jest to lista uporządkowana (ol etykietka). ol Tag zawiera również nazwę klasy Lista imion. Każda z losowych nazw jest reprezentowana jako element listy (Li tag) wewnątrz ol etykietka.
Aby wyodrębnić te losowe nazwy, utwórz nowy skrypt Python Ex07.py i wpisz następujące wiersze kodów w skrypcie.
od selenu importu WebdriverPo zakończeniu zapisz Ex07.py Skrypt Pythona.
Tutaj przeglądarka.Dostawać() Metoda ładuje stronę internetową generatora nazwy losowej w przeglądarce Firefox.
przeglądarka.find_elements_by_css_selector () Metoda wykorzystuje selektor CSS ol.Namelista Li znaleźć wszystko Li elementy wewnątrz ol tag o nazwie klasy Lista imion. Zapisałem wszystkie wybrane Li elementy w Lista imion zmienny.
A Do pętla służy do iteracji przez Lista imion Lista Li elementy. W każdej iteracji treść Li element jest wydrukowany na konsoli.
Jeśli uruchomisz Ex07.py Python skrypt, przyniesie wszystkie losowe nazwy ze strony internetowej i wydrukuje je na ekranie, jak widać na zrzucie ekranu poniżej.
$ Python3 Ex07.pyJeśli uruchomisz skrypt po raz drugi, powinien zwrócić nową listę losowych nazw użytkowników, jak widać na zrzucie ekranu poniżej.
Przykład 5: Przesyłanie formularza - wyszukiwanie na DuckDuckGo
Ten przykład jest tak samo prosty jak pierwszy przykład. W tym przykładzie odwiedzę wyszukiwarkę DuckDuckGo i przeszukam termin SELENIUM HQ za pomocą selenu.
Najpierw odwiedź wyszukiwarkę DuckDuckGo z przeglądarki internetowej Firefox.
Jeśli sprawdzisz pole wejścia wyszukiwania, powinien mieć identyfikator Search_form_input_homepage, Jak widać na zrzucie ekranu poniżej.
Teraz stwórz nowy skrypt Python Ex08.py i wpisz następujące wiersze kodów w skrypcie.
od selenu importu WebdriverPo zakończeniu zapisz Ex08.py Skrypt Pythona.
Tutaj przeglądarka.Dostawać() Metoda ładuje stronę główną wyszukiwarki DuckDuckGo w przeglądarce internetowej Firefox.
przeglądarka.find_element_by_id () Metoda wybiera element wejściowy z identyfikatorem Search_form_input_homepage i przechowuje to w SearchInput zmienny.
SearchInput.send_keys () Metoda służy do wysyłania danych naciśnięcia danych do pola wejściowego. W tym przykładzie wysyła ciąg SELENIUM HQ, a klawisz Enter jest naciskowy za pomocą Klucze.WCHODZIĆ stały.
Gdy tylko wyszukiwarka DuckDuckGo odbiera klawisz Enter naciśnij (Klucze.WCHODZIĆ), wyszukuje i wyświetla wynik.
Uruchom Ex08.py Skrypt Pythona, w następujący sposób:
$ Python3 Ex08.pyJak widać, przeglądarka internetowa Firefox odwiedziła wyszukiwarkę DuckDuckGo.
Automatycznie wpisał SELENIUM HQ W polu tekstowym wyszukiwania.
Gdy tylko przeglądarka otrzymała klawisz Enter naciśnij (Klucze.WCHODZIĆ), wyświetlił wynik wyszukiwania.
Przykład 6: Prześlij formularz na w3schools.com
W przykładzie 5 przesłanie formularza wyszukiwarki DuckDuckGo było łatwe. Wszystko, co musiałeś zrobić, to naciśnij klawisz Enter. Ale nie będzie tak w przypadku wszystkich zgłoszeń formularzy. W tym przykładzie pokażę bardziej złożoną obsługę formularzy.
Najpierw odwiedź stronę formularzy HTML W3Schools.com z przeglądarki internetowej Firefox. Po załadowaniu strony należy zobaczyć przykładowy formularz. To jest formularz, który prześlemy w tym przykładzie.
Jeśli sprawdzisz formularz, Imię pole wejściowe powinno mieć identyfikator Fname, Nazwisko pole wejściowe powinno mieć identyfikator lname, i Przycisk Prześlij powinien mieć typ składać, Jak widać na zrzucie ekranu poniżej.
Aby przesłać ten formularz za pomocą selenium, utwórz nowy skrypt Python Ex09.py i wpisz następujące wiersze kodów w skrypcie.
od selenu importu WebdriverPo zakończeniu zapisz Ex09.py Skrypt Pythona.
Tutaj przeglądarka.Dostawać() Metoda otwiera stronę W3Schools HTML Forms w przeglądarce internetowej Firefox.
przeglądarka.find_element_by_id () Metoda znajduje pola wejściowe według identyfikatora Fname I lname I przechowuje je w Fname I lname odpowiednio zmienne.
Fname.jasne() I lname.jasne() Metody Wyczyść domyślne imię (John) Fname wartość i nazwisko (DOE) lname wartość z pól wejściowych.
Fname.send_keys () I lname.send_keys () Metody Typ Shahriar I Shovon w Imię I Nazwisko Odpowiednio pola wejściowe.
przeglądarka.find_element_by_css_selector () Metoda wybiera Przycisk Prześlij formy i przechowuje ją w SubmeTButton zmienny.
SubmeTButton.send_keys () Metoda wysyła klawisz Enter naciśnij (Klucze.WCHODZIĆ) do Przycisk Prześlij formularza. To działanie przedłoży formularz.
Uruchom Ex09.py Skrypt Pythona, w następujący sposób:
$ Python3 Ex09.pyJak widać, formularz został automatycznie przesłany z odpowiednimi wejściami.
Wniosek
Ten artykuł powinien pomóc Ci zacząć od testowania przeglądarki selenium, automatyzacji sieci i bibliotek złomowania sieci w Python 3. Aby uzyskać więcej informacji, sprawdź oficjalną dokumentację Selenium Python.