Selenium

Automatizacija preglednika pomoću selena (Python)

Automatizacija preglednika pomoću selena (Python)
SELEN je internetski alat s otvorenim kodom koji se koristi za upravljanje web preglednikom putem mnogih programskih jezika. To je alat treće strane i dostupan je za mnoge programske jezike (npr.g. Java, Python, C #, PHP itd.). Ima podršku za gotovo sve preglednike. U ovom uputstvu ćemo pogledati kako koristiti Selenium s Pythonom jer Python pruža ugodno okruženje za upotrebu ovog alata. API Selenium za Python omogućuje vašem programu da izravno upravlja vašim preglednikom na sličan način kao i čovjek. Može vam otvoriti nove kartice, ispuniti vaše podatke, poslati obrasce, kliknuti na različite poveznice i druge slične radnje. Ovdje ćemo vidjeti kako automatiziramo svoj web preglednik pomoću selena s Pythonom.

Instalacija selena

Prije upotrebe SELEN modul u pythonu, moramo ga instalirati. Pokrenite sljedeću naredbu u terminalu da biste je instalirali.

pip instaliraj selen

ILI

pip3 instaliraj selen

Ovo će se instalirati SELEN modul i sada je spreman za upotrebu.

Web upravljački programi

Prije automatizacije web preglednika pomoću modula SELENIUM potreban je web upravljački program odabranog preglednika. Da bismo automatizirali preglednik Chrome, moramo imati Chrome web upravljački program. Staza, na koju se postavlja datoteka web-upravljačkog programa, prenosi se kao argument. Web pokretač komunicira s web preglednikom putem protokola. Idite na sljedeću poveznicu za preuzimanje web upravljačkih programa različitih preglednika.

https: // www.selenhq.org / download /

Početak rada

Nakon instalacije potrebnih modula, možete otvoriti python CLI i početi se igrati sa svojim preglednikom. Dakle, hajde da prvo uvozimo webdriver i druge module, ti će moduli i klase dopustiti vašem programu Python da šalje pritiske tipki i druge informacije u vaš preglednik.

C: \ Korisnici \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19. prosinca 2017., 06:54:40) [MSC v.1900 64 bit (AMD64)] na win32
Upišite "pomoć", "autorska prava", "krediti" ili "licenca" za više informacija.
>>> s web-drajvera za uvoz selena
>>> od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
#put do vaših Chrome upravljačkih programa
>>> upravljački program = webdriver.Chrome ('C: \ chromedriver')

Ovo će vam otvoriti novi prozor preglednika Chrome. Sada možete nabaviti selen za odlazak na bilo koju web stranicu pomoću .get () metoda. Ova metoda otvara web stranicu i pričekat će da se učita, a zatim možete unijeti sljedeću naredbu.

>>> vozač.get ("https: // www.facebook.com ")

Kako pronaći elemente na web stranici

Sljedećom metodom možemo pronaći određeni element na web stranici.

Lociranje elemenata pomoću selena

Da bismo locirali elemente na web stranici koristimo 'pronađi_element'metoda. Slijede 'pronađi_element'metode dostupne u SELEN.

Korištenjem gornjih metoda možemo pronaći element na web stranici i koristiti ga u našem kodu za automatizaciju.

Klik na različite web stranice Elementi

click () metoda u selenu može se koristiti za klikanje na različite veze i elemente gumba koje ste pronašli pomoću gore navedenih metoda. Na primjer, želite kliknuti na „Zaboravljeni račun?”Na Facebook stranici

>>> link_button = upravljački program.find_element_by_link_text ('Zaboravljeni račun?')
>>> gumb_veza.klik()

Pošaljite posebne ključeve

Selenium također ima modul koji vam omogućuje slanje posebnih tipki (npr.g, Enter, Escape, Stranica dolje, stranica gore itd.) tijekom pregledavanja weba. Morate uvesti ovaj modul pomoću sljedeće naredbe

>>> od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva

Na primjer, čitate članak na Wikipediji o povijesti Sjedinjenih Država, ali lijeni ste nakon nekog vremena pritisnuti tipku sa strelicom DOLJE. Možete automatizirati slanjem ovog ključa u preglednik pomoću programa Selenium

s selena za uvoz webdrivera
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
vrijeme uvoza
vozač = webdriver.Chrome ('C: \ chromedriver')
# Otvorite vezu na članak pomoću metode get
vozač.get ("https: // en.wikipedija.org / wiki / United_States ")
# Počnite od početka stranice
elem = vozač.find_element_by_tag_name ('html')
dok je Istina:
 
vrijeme.spavanje (5)
elem.send_keys (Tipke.DOLJE)

Kako automatizirati preglednik

U ovom ćemo odjeljku vidjeti kako automatizirati naš web preglednik uz pomoć nekih slučajeva korištenja.

Automatski se prijavite na web stranice društvenih medija

Pomoću web automatizacije možete jednostavno učiniti prijavu automatskom. Ako redovito provjeravate web stranice na društvenim mrežama (recimo u 20 sati), dobro je automatizirati ovaj postupak. Slijedi kôd za automatizaciju prijave u procesu korištenja dviju web stranica društvenih mreža 'facebook' i 'twitter' SELEN modul u Pythonu.

# uvoz webdrivera iz selenovog modula
s selena za uvoz webdrivera
 
# uvoz posebnih ključeva iz selena
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
 
# stvaranje objekta "driver" za "Google-Chrome"
vozač = webdriver.Chrome ('put do upravljačkog programa za Chrome')
 
# maksimiziranje prozora
vozač.maksimiziraj_prozor ()
 
# otvaranje facebooka
vozač.dobiti('http: // www.facebook.com')
 
# lociranje elementa 'E-pošta ili telefon' pomoću atributa 'id'
userName = upravljački program.find_element_by_id ('e-pošta')
 
# Unos korisničkog imena ili e-adrese za facebook
Korisničko ime.send_keys ('Unesite korisničko ime / e-mail')
 
# lociranje elementa 'Lozinka' pomoću atributa 'id'
passWord = pokretač.find_element_by_id ('pass')
 
# unos lozinke za facebook
zaporka.send_keys ("Unesi lozinku")
 
# pronalaženje elementa "gumb za prijavu" pomoću atributa "id" i pritiskom na "Enter"
vozač.find_element_by_id ('u_0_b').send_keys (Tipke.UNESI)
 
# otvaranje nove kartice za twitter
vozač.execute_script ("prozor.open ('http: // www.cvrkut.com ',' tab2 '); ")
 
# prebacivanje na novu karticu
vozač.switch_to_window ('tab2')
 
#locating element 'log in' i kliknuti na njega
vozač.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klik()
 
# lociranje elementa "Telefon, e-pošta ili korisničko ime"
userName = upravljački program.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# unos korisničkog imena za twitter
Korisničko ime.send_keys ('Unesite korisničko ime')
 
# lociranje elementa 'Lozinka'
passWord = pokretač.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# unos lozinke za twitter
zaporka.send_keys ('Unesi lozinku')
# pronalaženje gumba 'prijava' i klikanje na njega
vozač.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.klik()

Iznad kôd automatizira preglednik za prijavu na web stranice društvenih mreža. Prije svega stvorili smo objekt svog omiljenog preglednika. U ovom smo slučaju za upotrebu uzeli "Chrome" kao preglednik. Da bismo stvorili objekt, kao argument prošli smo put našeg 'chromedrivera'. Zatim smo unijeli url facebooka i prijavili se na Facebook odabirom elemenata i prosljeđivanjem korisničkog imena i lozinke.

Nakon toga otvorili smo novu karticu i unijeli url twitter-a. Nakon toga prešli smo na novu karticu jer je kontrola koda i dalje bila na prvoj kartici, iako je druga kartica bila otvorena. Zatim smo se prijavili na twitter odabirom elemenata i prosljeđivanjem korisničkog imena i lozinke.

Automatizacija internetske kupovine

Još jedan dobar primjer automatizacije preglednika može biti internetska kupnja. Na primjer, želite kupiti kameru putem interneta, ali cijene su previsoke. Svakodnevno provjeravate je li cijena u vašem rasponu ili ne. Ovaj se zadatak može automatizirati pomoću SELEN i možete izbjeći svakodnevnu provjeru cijene. Sljedeći će vas kôd putem pošte obavijestiti je li cijena željenog proizvoda pristupačna ili ne. Ako je vaš željeni proizvod na prodaju, program će vas obavijestiti e-poštom.

# uvoz webdrivera iz selenovog modula
s selena za uvoz webdrivera
 
# uvoz modula smtplib za slanje pošte
uvoz smtplib
 
# definiranje funkcije pošte za informiranje putem e-pošte
def mail ():
 
# uspostavljanje veze s gmail poslužiteljem s imenom domene i brojem porta. 
To se razlikuje kod svakog davatelja usluga e-pošte
veza = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# pozdravi poslužitelj
povezanost.ehlo ()
 
# pokretanje šifrirane TLS veze
povezanost.starttls ()
 
# prijavite se na gmail poslužitelj s glavnom adresom i lozinkom
povezanost.prijava ('adresa pošiljatelja', 'lozinka')
 
# slanje pošte samom sebi s informacijama o cijeni fotoaparata
povezanost.sendmail ('adresa e-pošte pošiljatelja', 'adresa e-pošte primatelja',
'Predmet: Možete kupiti kameru')
 
# završava veza
povezanost.prestati()
# funkcija e-pošte ovdje završava
 
# pokretanje google chrome pružanjem putanje chromedriver kao argumenta
vozač = webdriver.Chrome ('put do chromedrivera')
 
# minimiziranje kromiranog prozora
vozač.minimiziraj_prozor ()
 
# otvaranje draž.pk stranica
vozač.dobiti('https: // www.daraz.pk /')
 
# lociranje elementa trake za pretraživanje pomoću atributa id za traženje kamere
searchBar = upravljački program.find_element_by_id ('q')
 
#writing kamera u traci za pretraživanje
traka za pretraživanje.send_keys ('kamera')
 
#locating element gumba za pretraživanje pomoću xpath elementa
pretraga = vozač.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ obrazac / div / div [2] / gumb ')
 
#klik na gumb za pretraživanje
traži.klik()
 
# lociranje elementa željenog proizvoda pomoću atributa xpath
proizvod = pokretački program.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# klikom na željeni proizvod
proizvod.klik()
 
# lociranje elementa cijene pomoću atributa xpath
cijena = vozač.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# izdvajanje teksta iz elementa cijene. To daje cijenu proizvoda poput 'Rs. 24.500 '
cijena = cijena.tekst
 
# pretvaranje cijene u niz
Cijena = str (cijena)
 
# definiranje praznog niza. To će se koristiti za izdvajanje znamenki iz cijene poput '24500'
obrazac 'Rs. 24.500 '
broj = []
 
# čitanje svih unosa niza cijena jedan po jedan pomoću for petlje
za x u cijeni:
 
# provjera je li unos znamenkasti ili nije jer želimo samo znamenke u cijeni
ako je x.isdigit ():
 
# dodavanje samo znamenki na numerički popis
num.dodati (x)
 
# spajanje svih unosa num popisa. Sada je cijena niz koji sadrži samo znamenke
cijena = ".pridruži se (num)
 
# pretvaranje niza cijene u cijeli broj
cijena = int (cijena)
 
# provjera je li cijena pristupačna ili ne
ako cijena <= 25000:
 
# funkcija poziva e-poštom kako bi vas obavijestila o cijeni
pošta ()
 
# zatvaranje preglednika
vozač.prestati()

Iznad koda otvara se daraz.pk web mjesto i traži kameru te vas e-poštom obavještava je li cijena pristupačna. Prije svega smo uvozili SELEN i SMTPLIB modula. Tada smo definirali funkciju 'pošta' koja vam šalje poruku koja vas obavještava da je cijena pristupačna, kada je pozovete.

Nakon toga otvorili smo Chrome preglednik pomoću chromedrivera i tražili 'daraz.pk '. Tada lociramo željeni proizvod pomoću elemenata i njihovih atributa. Kako su elementi pronađeni i locirani, gore je opisano. Cijena koju smo dobili bila je niz, pa smo taj niz pretvorili u cijeli broj, a zatim provjerili je li cijena pristupačna ili ne. Ako je cijena pristupačna, nazovite funkciju 'pošta'.

Stvaranje Cron posla

Iznad dvije skripte za automatizaciju trebaju se pokretati jednom dnevno u određeno vrijeme. To možemo upravljati pomoću cron posla. Zadaci koji se dodaju u crontab mogu se ponavljati u određeno vrijeme. Da biste dodali gore navedene zadatke u crontab, prije svega pokrenite sljedeću naredbu u Linux Terminalu.

[e-pošta zaštićena]: ~ $ crontab -e

Iznad naredbe otvorit će datoteku crontab za uređivanje. Na kraju datoteke unesite sljedeću naredbu.

0 8 * * * python / path / to / python / script

Vidimo unose prije naredbe zdesna nalijevo.

Dakle, ova će se naredba izvoditi svaki dan u 8 sati.

Zaključak

U ovom smo članku razgovarali o tome kako možete koristiti SELEN zajedno s Pythonom za automatizaciju vašeg preglednika pomoću različitih tehnika. Pomoću njega možete automatizirati svoj svakodnevni rad, ispuniti obrasce, preuzeti svoje stvari i puno stvari. Ovdje smo razgovarali o samo dva primjera, ali svaku stvar koju čovjek može ručno napraviti možete automatizirati pomoću preglednika.

Emulirajte klikove mišem lebdeći mišem bez klika u sustavu Windows 10
Korištenje miša ili tipkovnice u pogrešnom držanju pretjerane upotrebe može rezultirati mnogim zdravstvenim problemima, uključujući naprezanje, sindro...
Dodajte geste miša u sustav Windows 10 pomoću ovih besplatnih alata
Posljednjih godina računala i operativni sustavi uvelike su se razvili. Bilo je vrijeme kada su korisnici morali koristiti naredbe za navigaciju kroz ...
Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...