Seleeni paigaldamine
Enne kasutamist SELEENIUM moodulit, peame selle installima. Selle installimiseks käivitage terminalis järgmine käsk.
pip paigaldage seleenVÕI
pip3 paigaldage seleenSee installitakse SELEENIUM moodul ja nüüd on see kasutamiseks valmis.
Veebidraiverid
Enne veebibrauseri automatiseerimist mooduli SELENIUM abil on vaja valitud brauseri veebidraiverit. Chrome'i brauseri automatiseerimiseks peab meil olema Chrome'i veebidraiver. Tee, kuhu veebidraiverifail paigutatakse, edastatakse argumendina. Veebidraiver suhtleb veebibrauseriga protokolli kaudu. Erinevate brauserite veebidraiverite allalaadimiseks minge järgmisele lingile.
https: // www.seleenhq.org / download /
Alustamine
Pärast vajalike moodulite installimist saate avada pythoni CLI ja hakata oma brauseriga mängima. Nii et impordime kõigepealt veebidraiveri ja muud moodulid, need moodulid ja klassid lasevad teie Pythoni programmil teie brauserisse klahvivajutusi ja muud teavet saata.
C: \ Kasutajad \ Usama Azad> pythonPython 3.6.4 (v3.6.4: d48eceb, 19. detsember 2017, 06:54:40) [MSC v.1900 64-bitine (AMD64)] Win32-l
Lisateabe saamiseks sisestage "abi", "autoriõigus", "krediit" või "litsents".
>>> seleeni importimise veebidraiverilt
>>> seleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
# tee oma kroomitud draiverite juurde
>>> draiver = veebidraiver.Chrome ('C: \ chromedriver')
See avab teile uue Chrome'i brauseriakna. Nüüd saate seleeni, et minna mis tahes veebisaidile .get () meetod. See meetod avab veebisaidi ja ootab selle laadimist, seejärel saate sisestada järgmise käsu.
>>> juht.get ("https: // www.facebook.com ")
Kuidas leida veebilehelt elemente
Veebilehelt saame konkreetse elemendi leida järgmise meetodi abil.
- Kõigepealt vajutage klahvi F12 Allikaleht avaneb akna paremas servas, nagu allpool näidatud
- Vajuta nüüd 'Ctrl + Tõst + Cvõi klõpsake allikalehe vasakus ülanurgas oleval sümbolil.
- Teisalda nool 'Email või telefon'ja klõpsake nuppu. Selle elemendi valib valitud element ja lähtekood tõstetakse allikalehel esile, nagu allpool näidatud. On näha, et meil on valitud elemendi jaoks järgmised atribuudid
- name = "email"
- class = "inputtext login_form_input_box"
- id = “email”
Me saame leida 'Email või telefon'elementi, kasutades mõnda ülaltoodud atribuutidest.
- Kui meil pole ühtegi ülalnimetatud atribuutidest, saame elemendi valida ka 'XPath". XPathi kopeerimiseks paremklõpsake lähtekoodi esiletõstetud lähtekoodil. Siis mineKopeeri> Kopeeri XPath".
Elementide leidmine seleeni abil
Kasutatavate elementide leidmiseks veebisaidil "leida_elementmeetod. Järgmised onleida_elementaastal saadaval olevad meetodid SELEENIUM.
- find_element_by_class_name (nimi)
- find_element_by_tag_name (nimi)
- find_element_by_link_text (tekst)
- find_element_by_css_selector (valija)
- find_element_by_name (nimi)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
Kasutades ülaltoodud meetodeid, saame mõne veebisaidi elemendi üles leida ja kasutada seda oma automaatikakoodis.
Klõpsates erinevatel veebilehe elementidel
click () meetodit seleenis saab kasutada klõpsamiseks erinevatel linkidel ja nupu elementidel, mille leiate ülaltoodud meetodite abil. Näiteks soovite klõpsata nupul „Unustatud konto?”Facebooki lehel
>>> link_button = draiver.find_element_by_link_text ('Unustatud konto?')>>> link_nupp.klõpsake ()
Saada eriklahvid
Seleenil on ka moodul, mis võimaldab teil saata spetsiaalseid võtmeid (nt.g, Enter, Escape, Page down, page up jne) veebi sirvimise ajal. Selle mooduli peate importima järgmise käsu abil
>>> seleenist.veebidraiver.tavaline.võtmed impordivad võtmeidNäiteks loete Vikipeedias artiklit Ameerika Ühendriikide ajaloost, kuid olete liiga laisk, et mõne aja pärast nooleklahvi alla vajutada. Saate automatiseerida, saates selle võtme brauserisse, kasutades Seleeni
seleeni impordi veebidraiveriltseleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
impordiaeg
draiver = veebidraiver.Chrome ('C: \ chromedriver')
#Avage artikli link, kasutades meetodit get
autojuht.get ("https: // et.vikipeedia.org / wiki / United_States ")
#Alusta lehe algusest
elem = juht.find_element_by_tag_name ('html')
tõsi:
aeg.magama (5)
elem.send_keys (võtmed.ALLA)
Kuidas brauserit automatiseerida
Selles jaotises näeme, kuidas mõningate kasutusjuhtumite abil oma veebibrauserit automatiseerida.
Logige sotsiaalmeedia veebisaitidele sisse automaatselt
Veebiautomaatika abil saate sisselogimisprotsessi hõlpsalt automaatseks muuta. Kui kontrollite oma sotsiaalmeedia veebisaite kindlal kellaajal (näiteks kell 20) regulaarselt, on hea seda protsessi automatiseerida. Järgmine on kood kahe sotsiaalmeedia saidi 'facebook' ja 'twitter' abil logimise automatiseerimiseks SELEENIUM moodul Pythonis.
# veebidraiveri import seleeni moodulistseleeni impordi veebidraiverilt
# spetsiaalsete võtmete import seleenist
seleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
# Google'i Chrome'i jaoks objekti "draiver" loomine
draiver = veebidraiver.Chrome ('tee Chrome'i draiverini')
# akna maksimeerimine
autojuht.maximize_window ()
# Facebooki avamine
autojuht.saada ('http: // www.facebook.com')
# elemendi „E-post või telefon” leidmine atribuudi „id” abil
kasutajanimi = draiver.find_element_by_id ('e-post')
# Sisestades facebooki kasutajanime või e-posti aadressi
kasutajanimi.send_keys ('Sisesta kasutajanimi / e-post')
# elemendi 'Parool' leidmine atribuudi 'id' abil
passWord = draiver.find_element_by_id ('pass')
# facebooki parooli sisestamine
passWord.send_keys ("Sisesta parool")
# elemendi 'login button' leidmine atribuudi 'id' abil ja vajutades sisestusklahvi
autojuht.find_element_by_id ('u_0_b').send_keys (võtmed.SISENEMA)
# uue vahelehe avamine twitteri jaoks
autojuht.execute_script ("aken.avatud ('http: // www.twitter.com ',' tab2 '); ")
# vahetamine uuele vahelehele
autojuht.switch_to_window ('tab2')
#locating 'log in' element ja sellel klõpsamine
autojuht.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klõpsake ()
# elemendi 'Telefon, e-post või kasutajanimi' leidmine
kasutajanimi = draiver.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
väli / div [1] / sisend ')
# Twitteri kasutajanime sisestamine
kasutajanimi.send_keys ('Sisesta kasutajanimi')
# elemendi 'Parool' leidmine
passWord = draiver.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
väli / div [2] / sisend ')
# twitteri parooli sisestamine
passWord.send_keys ('Sisesta parool')
# leidke nupp 'Logi sisse' ja klõpsake sellel
autojuht.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / nupp')
.klõpsake ()
Eespool toodud kood automatiseerib brauseri sotsiaalmeedia veebisaitidele sisselogimiseks. Kõigepealt lõime oma lemmikbrauseri objekti. Sellisel juhul oleme brauseriks võtnud Chrome'i. Objekti loomiseks läbisime argumendina oma 'kromedriveri' tee. Seejärel sisestasime facebooki URL-i ja logisime Facebooki sisse, valides elemendid ning edastades kasutajanime ja parooli.
Pärast seda avasime uue vahelehe ja sisestasime twitteri URL-i. Pärast seda läksime üle uuele vahelehele, kuna koodi juhtimine oli endiselt esimesel vahelehel, kuigi teine vaheleht oli avatud. Seejärel logisime Twitterisse sisse, valides elemendid ning edastades kasutajanime ja parooli.
Veebipõhine ostude automatiseerimine
Veel üks hea näide brauseri automatiseerimisest võib olla veebiostud. Näiteks soovite osta kaamera veebist, kuid hinnad on liiga kõrged. Iga päev kontrollite, kas hind on teie vahemikus või mitte. Selle ülesande saab automatiseerida SELEENIUM ja saate vältida hinna kontrollimist iga päev. Järgmine kood teavitab teid posti teel, kas teie soovitud toote hind on taskukohane või mitte. Kui teie soovitud toode on müügil, teavitab programm teid sellest e-posti teel.
# veebidraiveri import seleeni moodulistseleeni impordi veebidraiverilt
# smtplib mooduli importimine kirjade saatmiseks
import smtplib
# e-posti teel teavitamise funktsiooni määratlemine
def post ():
# ühenduse loomine gmaili serveriga domeeninime ja pordinumbriga.
See erineb igal e-posti pakkujal
ühendus = smtplib.SMTP ('smtp.gmail.com ", 587)
# tere serverile
ühendus.ehlo ()
# krüptitud TLS-ühenduse alustamine
ühendus.starttls ()
# logige sisse gmaili serverisse oma peamise aadressi ja parooliga
ühendus.login ('saatja e-posti aadress', 'parool')
# saadate endale kaamera, milles teavitate teid kaamera hinnast
ühendus.sendmail ('saatja posti aadress', 'vastuvõtja posti aadress',
Teema: saate kaamera osta)
# ühendus lõpetatakse
ühendus.lõpetage ()
# meilifunktsioon lõpeb siin
# google chromi käivitamine, esitades argumendina chromedriveri tee
draiver = veebidraiver.Chrome ('tee chromedriverini')
# kroomitud akna minimeerimine
autojuht.minimeeri_aken ()
# avamine draž.pk sait
autojuht.saada ('https: // www.daraz.pk /')
# otsinguriba elementi leidmine, kasutades kaamera otsimiseks atribuuti id
searchBar = draiver.find_element_by_id ('q')
#kirjutuskaamera otsinguribal
otsinguriba.send_keys ('kaamera')
#locating otsingunupu element, kasutades elemendi xpath
otsing = draiver.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ vorm / div / div [2] / nupp ')
#otsingu nupu klõpsamine
otsing.klõpsake ()
# soovitud toote asukoha element atribuudi xpath abil
toode = draiver.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 ')
# klõpsates soovitud toodet
toote.klõpsake ()
# hinna elemendi leidmine atribuudi xpath abil
hind = juht.find_element_by_xpath ('// * [@ id = "moodulitoode_hind_1"] / div / div / span')
# teksti eraldamine hinnaelemendist. See annab toote nagu Rs hinna. 24 500 '
hind = hind.teksti
# hinna teisendamine stringiks
Hind = str (hind)
# tühja massiivi määratlemine. Seda kasutatakse numbritest vormi hinna väljavõtmiseks, näiteks '24500'
vormi 'Rs. 24 500 '
arv = []
# loeb kõik hinnistringi kirjed ükshaaval silmusena
x-i jaoks hinnas:
# kontrollime, kas kirje on arvuline või mitte, kuna soovime, et hinnas oleksid ainult numbrid
kui x.isdigit ():
# lisab loendisse ainult numbreid
arv.lisa (x)
# numbriloendi kõigi kirjetega liitumine. Nüüd on hind string, mis sisaldab ainult numbreid
hind = ".liitu (arv)
# hinna stringi teisendamine täisarvuks
hind = int (hind)
# kontrollige, kas hind on taskukohane või mitte
kui hind <= 25000:
# helistamisfunktsioon hinna teavitamiseks
post ()
# brauser
autojuht.lõpetage ()
Koodi kohal avaneb daraz.pk sait ja otsib kaamerat ning teavitab teid e-posti teel, kui hind on taskukohane. Esiteks importisime SELEENIUM ja SMTPLIB moodulid. Seejärel määratlesime funktsiooni "post", mis saadab teile helistades teile posti, teatades teile, et hind on taskukohane.
Pärast seda avasime chromeedriveri abil kroomibrauseri ja otsisime sõna 'daraz.pk '. Seejärel leiame soovitud toote elementide ja nende atribuutide abil. Elementide leidmise ja paiknemise viisi on kirjeldatud eespool. Hind, mille saime, oli string, nii et teisendasime selle stringi täisarvuks ja seejärel kontrollisime, kas hind on taskukohane või mitte. Kui hind on taskukohane, helistage funktsiooni „mail”.
Croni töökoha loomine
Üle kahe automaatika skripti on vaja käivitada üks kord päevas kindlal kellaajal. Saame seda hallata croni töö abil. Crontabile lisatud ülesandeid saab kindla aja jooksul korduvalt käivitada. Eespool nimetatud ülesannete lisamiseks crontabisse käivitage kõigepealt järgmine käsk Linuxi terminalis.
[meiliga kaitstud]: ~ $ crontab -eÜlal käsk avab redigeerimiseks crontab-faili. Sisestage faili lõpus järgmine käsk.
0 8 * * * python / path / to / python / scriptNäeme sisestusi enne käsku paremalt vasakule.
- Esimene tärn paremalt tähendab seda, et seda käsku käitatakse iga päev nädalas.
- Teine tärn tähendab, et see käsk töötab iga kuu
- Kolmas tärn näitab, et see käsk töötab iga kuu kuus
- Neljas kirje on „8”, mis tähendab, et see skript töötab päeva 8. tunnil
- Viies kirje, mis on „0”, tähendab, et see käsk töötab 0. minutil.
Nii et see käsk töötab iga päev kell 8.
Järeldus
Selles artiklis me arutasime, kuidas saate seda kasutada SELEENIUM koos Pythoniga oma brauseri automatiseerimiseks, kasutades erinevaid tehnikaid. Selle abil saate oma igapäevast rutiinset tööd automatiseerida, vorme täita, oma asju ja palju muud alla laadida. Arutasime siin ainult kahte näidet, kuid saate iga inimese brauseriga käsitsi automatiseerida.