Seleno montavimas
Prieš naudojant SELENIJA modulis Python, mes turime jį įdiegti. Norėdami ją įdiegti, vykdykite šią komandą terminale.
pip montuoti selenąARBA
pip3 įdiekite selenąTai bus įdiegta SELENIJA modulis ir dabar jis yra paruoštas naudoti.
Žiniatinklio tvarkyklės
Prieš automatizuojant žiniatinklio naršyklę naudojant SELENIUM modulį, reikalinga pasirinktos naršyklės žiniatinklio tvarkyklė. Norėdami automatizuoti „Chrome“ naršyklę, turime turėti „Chrome“ žiniatinklio tvarkyklę. Kelias, kuriame yra žiniatinklio tvarkyklės failas, perduodamas kaip argumentas. Žiniatinklio tvarkyklė sąveikauja su interneto naršykle per protokolą. Norėdami atsisiųsti skirtingų naršyklių žiniatinklio tvarkykles, eikite į šią nuorodą.
https: // www.seleno kv.org / atsisiųsti /
Pradžia
Įdiegę reikiamus modulius, galite atidaryti python CLI ir pradėti žaisti su savo naršykle. Taigi pirmiausia importuokime žiniatinklio tvarkyklę ir kitus modulius, šie moduliai ir klasės leis jūsų „Python“ programai siųsti jūsų naršyklės klavišus ir kitą informaciją.
C: \ Vartotojai \ Usama Azad> python„Python 3“.6.4 (v3.6.4: d48eceb, 2017 m. Gruodžio 19 d., 06:54:40) [MSC v.1900 64 bitų (AMD64)] „Win32“
Norėdami gauti daugiau informacijos, įveskite „pagalba“, „autorių teisės“, „kreditai“ arba „licencija“.
>>> iš seleno importo žiniatinklio tvarkyklės
>>> iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
# kelias į jūsų „Chrome“ tvarkykles
>>> tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („C: \ chromedriver“)
Tai atvers jums naują „Chrome“ naršyklės langą. Dabar galite gauti seleno, kad apsilankytumėte bet kurioje svetainėje naudodamiesi .get () metodas. Šis metodas atidaro svetainę ir palaukia, kol ji bus įkelta, tada galėsite įvesti kitą komandą.
>>> vairuotojas.gauti ("https: // www.Facebook.com ")
Kaip rasti elementus tinklalapyje
Mes galime rasti konkretų elementą tinklalapyje, atlikdami šį metodą.
- Pirmiausia paspauskite mygtuką F12 Dešinėje lango pusėje atidaromas šaltinio puslapis, kaip parodyta žemiau
- Dabar paspauskite '„Ctrl“ + „Shift“ + Carba spustelėkite ant viršutiniame kairiajame šaltinio puslapio kampe esančio simbolio.
- Perkelti rodyklę antEl. paštas Ar telefonas'ir spustelėkite. Šis elementas pagal pasirinktą elementą bus paryškintas šaltinio puslapyje, kaip parodyta žemiau. Galima pastebėti, kad turime šiuos pasirinkto elemento atributus
- vardas = „el. paštas“
- class = „inputtext login_form_input_box“
- id = „el. paštas“
Mes galime rastiEl. paštas Ar telefonas'elementą naudodami bet kurį iš aukščiau nurodytų atributų.
- Jei neturime nė vieno iš aukščiau paminėtų atributų, elementą taip pat galime pasirinkti naudodami 'XPath". Norėdami nukopijuoti XPath, dešiniuoju pelės mygtuku spustelėkite pažymėtą šaltinio kodą šaltinio puslapyje. Tada eik į 'Kopijuoti> Kopijuoti XPath".
Elementų nustatymas naudojant seleną
Norėdami rasti elementus tinklalapyje, mes naudojame "rasti_elementasmetodas. Toliau pateikiamirasti_elementasmetodai, galimi SELENIJA.
- find_element_by_class_name (vardas)
- find_element_by_tag_name (vardas)
- find_element_by_link_text (tekstas)
- find_element_by_css_selector (selektorius)
- find_element_by_name (vardas)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
Naudodami aukščiau nurodytus metodus, galime rasti elementą tinklalapyje ir naudoti jį savo automatikos kode.
Spustelėję skirtingus tinklalapio elementus
click () metodas selene gali būti naudojamas norint spustelėti skirtingas nuorodas ir mygtukų elementus, kuriuos radote naudodamiesi aukščiau pateiktais metodais. Pavyzdžiui, norite spustelėti „Pamiršta sąskaita?“„ Facebook “puslapyje
>>> nuorodos_ mygtukas = tvarkyklė.find_element_by_link_text ('Pamiršta sąskaita?„)>>> nuorodos_ mygtukas.spustelėkite ()
Siųsti specialius raktus
Selenas taip pat turi modulį, leidžiantį siųsti specialius raktus (pvz.,.g, Enter, Escape, Page down, page up etc.) naršydami internete. Turite importuoti šį modulį naudodami šią komandą
>>> iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktusPvz., Skaitote straipsnį „Wikipedia“ apie JAV istoriją, tačiau tingite po kurio laiko paspausti rodyklę žemyn. Galite automatizuoti siųsdami šį raktą į naršyklę naudodami „Selenium“
iš seleno importo žiniatinklio tvarkyklėsiš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
importo laikas
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („C: \ chromedriver“)
# Atidarykite straipsnio nuorodą naudodami „get“ metodą
vairuotojas.gauti ("https: // lt.vikipedija.org / wiki / United_States ")
#Pradėkite nuo puslapio pradžios
elem = vairuotojas.find_element_by_tag_name ('html')
o tiesa:
laikas.miegas (5)
elem.send_keys (raktai.ŽEMYN)
Kaip automatizuoti naršyklę
Šiame skyriuje pamatysime, kaip automatizuoti savo interneto naršyklę, naudojant kai kuriuos naudojimo atvejus.
Automatiškai prisijunkite prie socialinės žiniasklaidos svetainių
Naudodamiesi žiniatinklio automatizavimu, jūs galite lengvai padaryti prisijungimo procesą automatinį. Jei reguliariai tikrinate savo socialinės žiniasklaidos svetaines tam tikru laiku (tarkime, 20 val.), Tai gerai automatizuoti šį procesą. Toliau pateikiamas kodas, skirtas automatizuoti registravimą dviejose socialinės žiniasklaidos svetainėse „facebook“ ir „twitter“ naudojant SELENIJA modulis „Python“.
# importuoti žiniatinklio tvarkyklę iš seleno modulioiš seleno importo žiniatinklio tvarkyklės
# importuoja specialius raktus iš seleno
iš seleno.žiniatinklio tvarkyklė.paplitęs.raktai importuoja raktus
# kurti „vairuotojo“ objektą „Google-Chrome“
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („kelias į„ Chrome “tvarkyklę“)
# maksimaliai padidinti langą
vairuotojas.maximize_window ()
# atidarymas facebook
vairuotojas.gauti ('http: // www.Facebook.com„)
# suraskite elementą „El. paštas arba telefonas“ naudodami atributą „id“
vartotojo vardas = tvarkyklė.find_element_by_id ('el. paštas')
# Įveskite „Facebook“ vartotojo vardą arba el. Pašto adresą
Vartotojo vardas.send_keys ('Įveskite vartotojo vardą / el. pašto adresą')
# suraskite elementą „Slaptažodis“ naudodami atributą „id“
passWord = tvarkyklė.find_element_by_id ('leidimas')
# įvesti „Facebook“ slaptažodį
Slaptažodis.send_keys ("Įveskite slaptažodį")
# suraskite elementą „prisijungimo mygtukas“ naudodami atributą „id“ ir paspauskite „Enter“
vairuotojas.find_element_by_id ('u_0_b').send_keys (raktai.ENTER)
# atidaryti naują „Twitter“ skirtuką
vairuotojas.execute_script ("langas.atidaryti ('http: // www.„twitter“.com ',' tab2 '); ")
# perėjimas prie naujo skirtuko
vairuotojas.switch_to_window ('tab2')
#locating elementas 'log in' ir paspaudimas ant jo
vairuotojas.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').spustelėkite ()
# rasti elementą „Telefonas, el. paštas arba vartotojo vardas“
vartotojo vardas = tvarkyklė.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / forma /
lauko rinkinys / div [1] / įvestis ')
# įveskite „Twitter“ vartotojo vardą
Vartotojo vardas.send_keys ('Įveskite vartotojo vardą')
# rasti elementą „Slaptažodis“
passWord = tvarkyklė.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / forma /
lauko rinkinys / div [2] / įvestis ')
# įveskite „Twitter“ slaptažodį
Slaptažodis.send_keys ('Įveskite slaptažodį')
# suraskite mygtuką „prisijungti“ ir spustelėkite jį
vairuotojas.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / mygtukas')
.spustelėkite ()
Aukščiau pateiktas kodas automatizuoja naršyklę prisijungti prie socialinės žiniasklaidos svetainių. Visų pirma mes sukūrėme savo mėgstamos naršyklės objektą. Šiuo naudojimo atveju „Chrome“ laikėme naršykle. Norėdami sukurti objektą, mes perėjome savo „chromedriver“ kelią kaip argumentą. Tada mes įvedėme „facebook“ URL ir prisijungėme prie „Facebook“, pasirinkdami elementus ir perdavę vartotojo vardą bei slaptažodį.
Po to atidarėme naują skirtuką ir įvedėme „twitter“ URL. Po to mes perėjome į naują skirtuką, nes kodo valdymas vis dar buvo pirmame skirtuke, nors antrasis skirtukas buvo atidarytas. Tada mes prisijungėme prie „Twitter“ pasirinkdami elementus ir perdavę vartotojo vardą bei slaptažodį.
Pirkimo internetu automatika
Kitas geras naršyklės automatizavimo pavyzdys galėtų būti internetinis pirkimas. Pavyzdžiui, norite nusipirkti fotoaparatą internetu, tačiau kainos yra per aukštos. Kasdien tikrinate, ar kaina yra jūsų diapazone, ar ne. Šią užduotį galima automatizuoti naudojant SELENIJA ir jūs galite išvengti kainos tikrinimo kasdien. Nurodytas kodas paštu jums praneš, ar jūsų pageidaujamo produkto kaina yra prieinama. Jei jūsų pageidaujamas produktas yra parduodamas, programa jums apie tai praneš el. Paštu.
# importuoti žiniatinklio tvarkyklę iš seleno modulioiš seleno importo žiniatinklio tvarkyklės
# importuojantis smtplib modulis laiškams siųsti
importuoti smtplib
# apibrėžianti pašto funkciją informuoti el. paštu
def mail ():
# užmegzti ryšį su „Gmail“ serveriu su domeno vardu ir prievado numeriu.
Kiekvienam el. Pašto paslaugų teikėjui tai skiriasi
jungtis = smtplib.SMTP ('smtp.gmail.com “, 587)
# pasisveikink su serveriu
ryšį.ehlo ()
# pradedamas užšifruotas TLS ryšys
ryšį.starttls ()
# prisijunkite prie „Gmail“ serverio naudodami savo pagrindinį adresą ir slaptažodį
ryšį.prisijungimas („siuntėjo pašto adresas“, „slaptažodis“)
# siunčiate sau laišką, kuriame informuojate apie fotoaparato kainą
ryšį.sendmail („siuntėjo pašto adresas“, „gavėjo pašto adresas“,
Tema: Galite nusipirkti fotoaparatą)
# baigiamas ryšys
ryšį.mesti ()
# pašto funkcija čia baigsis
# paleidus „Google Chrome“, argumentu pateikiant „chromedriver“ kelią
tvarkyklė = žiniatinklio tvarkyklė.„Chrome“ („kelias į chromedriver“)
# chromo lango sumažinimas
vairuotojas.minimize_window ()
# atidarymo draz.pk svetainė
vairuotojas.gauti ('https: // www.darazas.pk /„)
# paieškos juostos elemento nustatymas naudojant atributą „id“ kameros paieškai
searchBar = tvarkyklė.find_element_by_id ('q')
#writing camera paieškos juostoje
paieškos juosta.send_keys ('kamera')
#locating paieškos mygtuko elementas naudojant elemento xpath
paieška = tvarkyklė.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ forma / div / div [2] / mygtukas ')
#spustelėjus paieškos mygtuką
Paieška.spustelėkite ()
# norimo produkto elemento nustatymas naudojant „xpath“ atributą
produktas = tvarkyklė.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 ')
# spustelėdami norimą produktą
produktas.spustelėkite ()
# kainos nustatymo elementas naudojant atributą xpath
kaina = vairuotojas.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
# išgauti tekstą iš kainos elemento. Tai suteikia tokio produkto kainą kaip „Rs“. 24 500 '
kaina = kaina.teksto
# konvertuoti kainą į eilutę
Kaina = str (kaina)
# tuščio masyvo apibrėžimas. Tai bus naudojama išgaunant skaitmenų formą, pvz., „24500“
forma „Rs. 24 500 '
skaičius = []
# skaito visus kainų eilutės įrašus po vieną naudodami ciklą
už x kainą:
# patikrinti, ar įrašas skaitmuo, ar ne, nes mes norime tik skaitmenų kainos
jei x.isdigit ():
# prie skaitmenų sąrašo pridedami tik skaitmenys
skaičius.pridėti (x)
# prisijungti prie visų numerių įrašų įrašų. Dabar kaina yra eilutė, kurioje yra tik skaitmenys
kaina = ".prisijungti (skaičius)
# konvertuoti kainos eilutę į sveiką skaičių
kaina = int (kaina)
# patikrinti, ar kaina yra prieinama, ar ne
jei kaina <= 25000:
# skambinimo pašto funkcija, skirta informuoti apie kainą
Paštas()
# uždaroma naršyklė
vairuotojas.mesti ()
Virš kodo atidaromas darazas.pk svetainę ir ieško fotoaparato ir informuoja jus el. paštu, jei kaina yra prieinama. Pirmiausia mes importavome SELENIJA ir SMTPLIB moduliai. Tada mes nustatėme „pašto“ funkciją, kuri jums siunčia laišką, informuodama, kad paskambinus kaina yra prieinama.
Po to atidarėme „Chrome“ naršyklę naudodami „chromedriver“ ir ieškojome „daraz“.pk '. Tada surandame norimą produktą naudodami elementus ir jų atributus. Kaip elementai randami ir randami, buvo aprašyta aukščiau. Kaina, kurią gavome, buvo eilutė, todėl konvertuojome šią eilutę į sveiką skaičių ir tada patikrinome, ar kaina yra prieinama, ar ne. Jei kaina yra prieinama, paskambinkite „pašto“ funkcija.
„Cron“ darbo kūrimas
Virš dviejų automatizavimo scenarijų reikia paleisti kartą per dieną tam tikru laiku. Mes galime tai valdyti naudodami „cron“ darbą. Prie crontab pridėtos užduotys gali būti vykdomos tam tikru laiku pakartotinai. Norėdami pridėti aukščiau nurodytas užduotis crontab, pirmiausia paleiskite šią komandą „Linux“ terminale.
[apsaugotas el. paštas]: ~ $ crontab -eVirš komandos atsidarys redaguoti crontab failas. Failo pabaigoje įveskite šią komandą.
0 8 * * * python / path / to / python / scriptMes matome įrašus prieš komandą iš dešinės į kairę.
- Pirmoji žvaigždutė iš dešinės reiškia, kad ši komanda bus vykdoma kiekvieną savaitę.
- Antroji žvaigždutė reiškia, kad ši komanda bus vykdoma kiekvieną mėnesį
- Trečioji žvaigždutė rodo, kad ši komanda bus vykdoma kiekvieną mėnesio dieną
- Ketvirtas įrašas yra „8“, o tai reiškia, kad šis scenarijus bus paleistas 8-tą dienos valandą
- Penktasis įrašas, kuris yra „0“, reiškia, kad ši komanda bus paleista 0 minutę.
Taigi ši komanda bus vykdoma kasdien 8 val.
Išvada
Šiame straipsnyje aptarėme, kaip galite naudotis SELENIJA kartu su „Python“, kad jūsų naršyklė būtų automatizuota naudojant skirtingas technikas. Juo naudodamiesi galite automatizuoti savo kasdienį darbą, užpildyti formas, atsisiųsti daiktus ir daugybę kitų dalykų. Aptarėme tik du pavyzdžius, tačiau naršyklėje galite automatizuoti kiekvieną žmogaus atliekamą dalyką.