Instalacija selena
Prije upotrebe SELEN modul u pythonu, moramo ga instalirati. Pokrenite sljedeću naredbu u terminalu da biste je instalirali.
pip instaliraj selenILI
pip3 instaliraj selenOvo ć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> pythonPython 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.
- Prije svega pritisnite F12 Izvorna stranica otvara se s desne strane prozora kako je prikazano u nastavku
- Sada pritisnite 'Ctrl + Shift + C'ili kliknite simbol koji se nalazi u gornjem lijevom kutu izvorne stranice.
- Pomaknite strelicu na 'Email ili telefon'polje i kliknite. Odabrani će ovaj element i izvorni kod ovog elementa je istaknut na izvornoj stranici kao što je prikazano u nastavku. Vidi se da za odabrani element imamo sljedeće atribute
- ime = "e-pošta"
- class = “inputtext login_form_input_box”
- id = "e-pošta"
Možemo locirati 'Email ili telefon'pomoću bilo kojeg od gore navedenih atributa.
- Ako nemamo niti jedan od gore spomenutih atributa, tada također možemo odabrati element pomoću 'XPath'. Da biste kopirali XPath, desnom tipkom miša kliknite istaknuti izvorni kod na izvornoj stranici. Onda idite na 'Kopiraj> Kopiraj XPath'.
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.
- find_element_by_class_name (ime)
- find_element_by_tag_name (ime)
- find_element_by_link_text (tekst)
- find_element_by_css_selector (selektor)
- find_element_by_name (ime)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
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čevaNa 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 webdriveraod 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 modulas 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 modulas 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 -eIznad naredbe otvorit će datoteku crontab za uređivanje. Na kraju datoteke unesite sljedeću naredbu.
0 8 * * * python / path / to / python / scriptVidimo unose prije naredbe zdesna nalijevo.
- Prva zvjezdica zdesna znači da će se ova naredba izvoditi svaki dan u tjednu.
- Druga zvjezdica znači da će se ova naredba pokretati svakog mjeseca
- Treća zvjezdica pokazuje da će se ova naredba izvoditi svakog dana u mjesecu
- Četvrti unos je '8', što znači da će se ova skripta izvoditi u 8. satu dana
- Peti unos koji je '0' znači da će se ova naredba pokrenuti u 0. minuti.
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.