Selen

Avtomatizacija brskalnika z uporabo selena (Python)

Avtomatizacija brskalnika z uporabo selena (Python)
SELEN je spletno in odprtokodno orodje, ki se uporablja za nadzor spletnega brskalnika prek številnih programskih jezikov. Je neodvisno orodje in je na voljo za številne programske jezike (npr.g. Java, Python, C #, PHP itd.). Podpira skoraj vse brskalnike. V tej vadnici bomo preučili, kako uporabljati Selenium s Pythonom, ker Python zagotavlja udobno okolje za uporabo tega orodja. API Selenium za Python omogoča, da vaš program neposredno upravlja vaš brskalnik na podoben način kot človek. Lahko vam odpre nove zavihke, izpolni vaše podatke, pošlje obrazce, klikne različne povezave in druga podobna dejanja. Tu bomo videli, kako avtomatiziramo naš spletni brskalnik z uporabo selena s Pythonom.

Namestitev selena

Pred uporabo SELEN modul v pythonu, ga moramo namestiti. V terminalu zaženite naslednji ukaz, da ga namestite.

pip namestite selen

ALI

pip3 namestite selen

To bo namestilo SELEN modul in je zdaj pripravljen za uporabo.

Spletni gonilniki

Pred avtomatizacijo spletnega brskalnika z uporabo modula SELENIUM je potreben spletni gonilnik izbranega brskalnika. Za avtomatizacijo brskalnika Chrome moramo imeti spletni gonilnik Chrome. Pot, kamor je postavljena datoteka spletnega gonilnika, se posreduje kot argument. Spletni gonilnik deluje s spletnim brskalnikom prek protokola. Za prenos spletnih gonilnikov različnih brskalnikov pojdite na naslednjo povezavo.

https: // www.selen hq.org / download /

Kako začeti

Po namestitvi zahtevanih modulov lahko odprete python CLI in začnete igrati s svojim brskalnikom. Torej, najprej uvozimo webdriver in druge module, ti moduli in razredi bodo vašemu programu Python omogočili, da v vaš brskalnik pošlje pritiske na tipke in druge informacije.

C: \ Uporabniki \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19. decembra 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] na win32
Za več informacij vnesite "pomoč", "avtorske pravice", "dobropisi" ali "licenca".
>>> iz spletnega pogona za uvoz selena
>>> iz selena.spletni pogon.običajni.tipke za uvoz ključev
#path do vaših gonilnikov za Chrome
>>> gonilnik = spletni voznik.Chrome ('C: \ chromedriver')

To vam bo odprlo novo okno brskalnika Chrome. Zdaj lahko dobite selen za obisk katerega koli spletnega mesta .get () metoda. Ta metoda odpre spletno mesto in počaka, da se naloži, nato pa lahko vnesete naslednji ukaz.

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

Kako najti elemente na spletni strani

Na spletni strani lahko najdemo določen element na naslednji način.

Iskanje elementov s pomočjo selena

Za iskanje elementov na spletni strani uporabljamo 'najdi_element'metoda. Sledijonajdi_element'metode, ki so na voljo v SELEN.

Z uporabo zgornjih metod lahko element poiščemo na spletni strani in ga uporabimo v naši avtomatizacijski kodi.

Klik na različne spletne strani Elementi

Z metodo click () v selenu lahko kliknete različne povezave in elemente gumbov, ki ste jih našli z zgornjimi metodami. Na primer, želite klikniti »Pozabljeni račun?”Na Facebook strani

>>> link_button = gonilnik.find_element_by_link_text ('Pozabljen račun?')
>>> gumb_povezave.kliknite ()

Pošlji posebne ključe

Selen ima tudi modul, ki vam omogoča pošiljanje posebnih ključev (npr.g, Enter, Escape, Page down, page up itd.) med brskanjem po spletu. Ta modul morate uvoziti z naslednjim ukazom

>>> iz selena.spletni pogon.običajni.tipke za uvoz ključev

Na primer, berete članek na Wikipediji o zgodovini Združenih držav, vendar ste leni, da čez nekaj časa pritisnete puščično tipko DOL. Ta ključ lahko avtomatizirate tako, da s pomočjo selena v brskalnik pošljete ta ključ

iz spletnega pogona za uvoz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
čas uvoza
voznik = spletni voznik.Chrome ('C: \ chromedriver')
# Odprite povezavo do članka s pomočjo metode get
voznik.get ("https: // en.wikipedia.org / wiki / United_States ")
# Začnite od začetka strani
elem = gonilnik.find_element_by_tag_name ('html')
medtem ko je True:
 
čas.spanje (5)
elem.send_keys (Tipke.DOL)

Kako avtomatizirati brskalnik

V tem poglavju bomo videli, kako s pomočjo nekaterih primerov uporabiti svoj spletni brskalnik.

Samodejno se prijavite na spletna mesta socialnih medijev

S spletno avtomatizacijo lahko enostavno prijavite postopek samodejno. Če redno preverjate spletna mesta v družabnih omrežjih (recimo ob 20.00), je dobro ta postopek avtomatizirati. Sledi koda za avtomatizacijo beleženja v postopku uporabe dveh spletnih mest »facebook« in »twitter« v družabnih omrežjih SELEN modul v Pythonu.

# uvoz webdriverja iz modula selena
iz spletnega pogona za uvoz selena
 
# uvoz posebnih ključev iz selena
iz selena.spletni pogon.običajni.tipke za uvoz ključev
 
# ustvarjanje predmeta 'voznik' za 'Google-Chrome'
voznik = spletni voznik.Chrome ('pot do gonilnika za Chrome')
 
# maksimiranje okna
voznik.maksimiraj_okno ()
 
# odpiranje facebooka
voznik.get ('http: // www.facebook.com')
 
# iskanje elementa 'E-pošta ali telefon' z uporabo atributa 'id'
userName = gonilnik.find_element_by_id ('email')
 
# Vnos uporabniškega imena ali e-pošte za facebook
userName.send_keys ('Vnesite uporabniško ime / e-pošto')
 
# iskanje elementa 'Password' z uporabo atributa 'id'
passWord = gonilnik.find_element_by_id ('pass')
 
# vnos gesla za facebook
passWord.send_keys ("Vnesi geslo")
 
# lociranje elementa 'prijavni gumb' z uporabo atributa 'id' in pritiskom na 'Enter'
voznik.find_element_by_id ('u_0_b').send_keys (Tipke.ENTER)
 
# odpiranje novega zavihka za twitter
voznik.execute_script ("okno.odprto ('http: // www.twitter.com ',' tab2 '); ")
 
# preklop na nov zavihek
voznik.switch_to_window ('tab2')
 
#locating element 'log in' in ga kliknemo
voznik.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').kliknite ()
 
# lociranje elementa 'Telefon, e-pošta ali uporabniško ime'
userName = gonilnik.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# vnos uporabniškega imena za twitter
userName.send_keys ('Vnesite uporabniško ime')
 
# lociranje elementa 'Geslo'
passWord = gonilnik.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# vnos gesla za twitter
passWord.send_keys ('Vnesi geslo')
# poiščite gumb 'prijava' in ga kliknite
voznik.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.kliknite ()

Zgornja koda avtomatizira brskalnik za prijavo na spletna mesta družabnih medijev. Najprej smo ustvarili predmet našega najljubšega brskalnika. V tem primeru smo za brskalnik vzeli "Chrome". Za ustvarjanje predmeta smo kot argument podali pot našega 'chromedriverja'. Nato smo vnesli URL facebooka in se prijavili v Facebook z izbiro elementov ter posredovanjem uporabniškega imena in gesla.

Po tem smo odprli nov zavihek in vnesli URL twitterja. Po tem smo prešli na nov zavihek, saj je bil nadzor nad kodo še vedno na prvem zavihku, čeprav je bil drugi zavihek odprt. Nato smo se v twitter prijavili z izbiro elementov in posredovanjem uporabniškega imena in gesla.

Avtomatizacija spletnega nakupovanja

Še en dober primer avtomatizacije brskalnikov je lahko spletno nakupovanje. Na primer, želite kupiti kamero po spletu, vendar so cene previsoke. Vsak dan preverite, ali je cena v vašem območju ali ne. To nalogo je mogoče avtomatizirati z uporabo SELEN in se lahko izognete preverjanju cene vsak dan. Naslednja koda vas bo po pošti obvestila, ali je cena želenega izdelka ugodna ali ne. Če je vaš želeni izdelek na prodaj, vas bo program o tem obvestil po e-pošti.

# uvoz webdriverja iz modula selena
iz spletnega pogona za uvoz selena
 
# uvoz modula smtplib za pošiljanje pošte
uvozi smtplib
 
# definiranje funkcije pošte za obveščanje po e-pošti
def mail ():
 
# vzpostavljanje povezave s strežnikom gmail z imenom domene in številko vrat. 
To se razlikuje pri vsakem ponudniku e-pošte
povezava = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# pozdravi strežnik
povezavo.ehlo ()
 
# zagon šifrirane povezave TLS
povezavo.starttls ()
 
# prijavite se v gmail strežnik z glavnim naslovom in geslom
povezavo.prijava ('naslov pošiljatelja', 'geslo')
 
# pošiljanje pošte sebi z obveščanjem o ceni fotoaparata
povezavo.sendmail ('poštni naslov pošiljatelja', 'poštni naslov prejemnika',
„Zadeva: Kamero lahko kupite“)
 
# končna povezava
povezavo.prenehati()
Funkcija # mail se tu konča
 
# zagon google chrome z navedbo poti chromedriver kot argumenta
voznik = spletni voznik.Chrome ('pot do chromedriver')
 
# zmanjšanje kromiranega okna
voznik.minimize_window ()
 
# odpiranje draž.stran pk
voznik.get ('https: // www.daraz.pk /')
 
# lociranje elementa iskalne vrstice z uporabo atributa id za iskanje kamere
searchBar = gonilnik.find_element_by_id ('q')
 
#writing kamera v iskalni vrstici
searchBar.send_keys ('kamera')
 
#locating element gumba za iskanje z uporabo xpath elementa
iskanje = gonilnik.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / button ')
 
#klik na gumb za iskanje
Iskanje.kliknite ()
 
# lociranje elementa želenega izdelka z uporabo atributa xpath
izdelek = gonilnik.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 ')
 
# kliknite na želeni izdelek
izdelka.kliknite ()
 
# lociranje elementa cene z uporabo atributa xpath
cena = voznik.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# pridobivanje besedila iz cenovnega elementa. To daje ceno izdelka, na primer 'Rs. 24.500 '
cena = cena.besedilo
 
# pretvorba cene v niz
Cena = str (cena)
 
# definiranje praznega polja. To se bo uporabilo za pridobivanje številk iz cene, kot je '24500'
obrazec 'Rs. 24.500 '
število = []
 
# branje vseh vnosov cenovnega niza enega za drugim z uporabo zanke for
za x v ceni:
 
# preverjanje, ali je vnos cifren ali ne, saj želimo samo številke v ceni
če je x.isdigit ():
 
# dodajanje samo številk na številski seznam
številka.dodaj (x)
 
# združuje vse vnose številskega seznama. Zdaj je cena niz, ki vsebuje samo števke
cena = ".pridruži se (številka)
 
# pretvorba niza cene v celo število
cena = int (cena)
 
# preverjanje, ali je cena ugodna ali ne
če cena <= 25000:
 
# funkcija klicanja pošte, ki vas obvešča o ceni
pošta ()
 
# zapiranje brskalnika
voznik.prenehati()

Nad kodo se odpre daraz.pk in išče kamero ter vas po e-pošti obvesti, če je cena ugodna. Najprej smo uvozili SELEN in SMTPLIB moduli. Nato smo definirali funkcijo 'mail', ki vam ob klicu pošlje pošto, ki vas obvesti, da je cena ugodna.

Po tem smo s kromedriverjem odprli brskalnik chrome in iskali 'daraz.pk '. Nato poiščemo želeni izdelek z uporabo elementov in njihovih lastnosti. Kako je mogoče najti in najti elemente, je bilo opisano zgoraj. Cena, ki smo jo dobili, je bila niz, zato smo jo pretvorili v celo število in nato preverili, ali je cena dostopna ali ne. Če je cena dostopna, pokličite funkcijo 'mail'.

Ustvarjanje opravila Cron

Zgoraj dva skripta za avtomatizacijo se morata zagnati enkrat na dan ob točno določenem času. To lahko upravljamo s pomočjo cron job. Opravila, ki jih dodate v crontab, je mogoče večkrat zagnati ob določenem času. Če želite dodati zgoraj naloge v crontab, najprej zaženite naslednji ukaz v terminalu Linux.

[e-pošta zaščitena]: ~ $ crontab -e

Zgornji ukaz bo odprl datoteko crontab za urejanje. Na koncu datoteke vnesite naslednji ukaz.

0 8 * * * python / pot / do / python / skripta

Vnose pred ukazom vidimo od desne proti levi.

Torej, ta ukaz bo deloval vsak dan ob 8. uri.

Zaključek

V tem članku smo razpravljali o tem, kako lahko uporabljate SELEN skupaj s Pythonom za avtomatizacijo brskalnika z uporabo različnih tehnik. Z njim lahko avtomatizirate svoje vsakdanje delo, izpolnite obrazce, prenesete svoje stvari in veliko stvari. Tu smo obravnavali samo dva primera, vendar lahko vsako stvar, ki jo človek lahko naredi ročno, avtomatizirate z brskalnikom.

Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...