Installasjon av selen
Før bruk SELENIUM modul i python, må vi installere den. Kjør følgende kommando i terminalen for å installere den.
pip installere selenELLER
pip3 installer selenDette installeres SELENIUM modul og nå er den klar til bruk.
Nettdrivere
Før du automatiserer nettleseren ved hjelp av SELENIUM-modulen, kreves det nettdriver for valgt nettleser. For å automatisere Chrome Browser må vi ha Chrome nettdriver. Stien, der webdriverfilen er plassert, blir sendt som argument. Webdriver samhandler med nettleseren gjennom en protokoll. Gå til følgende lenke for å laste ned nettdrivere for forskjellige nettlesere.
https: // www.selenhq.org / nedlasting /
Starter
Etter å ha installert de nødvendige modulene, kan du åpne python CLI og begynne å spille med nettleseren din. Så la oss importere webdriver og andre moduler først, disse modulene og klassene lar Python-programmet ditt sende tastetrykk og annen informasjon til nettleseren din.
C: \ Brukere \ Usama Azad> pythonPython 3.6.4 (v3.6.4: d48eceb, 19. des 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] på win32
Skriv inn "help", "copyright", "credits" eller "lisens" for mer informasjon.
>>> fra selen import webdriver
>>> fra selen.webdriver.felles.nøkler importerer nøkler
#sti til kromdriverne dine
>>> driver = webdriver.Chrome ('C: \ chromedriver')
Dette åpner et nytt Chrome-nettleservindu for deg. Nå kan du få selen til å gå til et hvilket som helst nettsted ved hjelp av .get () -metoden. Denne metoden åpner nettstedet og venter på at det skal lastes inn, så kan du skrive inn din neste kommando.
>>> sjåfør.få ("https: // www.facebook.com ")
Hvordan finne elementer på en webside
Vi kan finne et bestemt element på en webside ved å følge metoden.
- Trykk først på F12 En kildeside åpnes på høyre side av vinduet som vist nedenfor
- Trykk nåCtrl + Skift + C'eller klikk på symbolet øverst til venstre på kildesiden.
- Flytt pilen på 'Email eller telefonog klikk. Dette elementet blir valgt og kildekoden til dette elementet er uthevet på kildesiden som vist nedenfor. Det kan sees at vi har følgende attributter for valgt element
- navn = “e-post”
- class = “inputtext login_form_input_box”
- id = “e-post”
Vi kan finne 'Email eller telefonelement ved å bruke en av de ovennevnte attributtene.
- Hvis vi ikke har noen av de ovennevnte attributtene, kan vi også velge element ved hjelp av 'XPath'. For å kopiere XPath, høyreklikk på uthevet kildekode på kildesiden. Gå deretter til 'Kopier> Kopier XPath'.
Finne elementer ved hjelp av selen
For å finne elementer på en webside bruker vi 'finn_elementmetoden. Følgende er 'finn_elementmetoder tilgjengelig i SELENIUM.
- find_element_by_class_name (name)
- find_element_by_tag_name (name)
- find_element_by_link_text (tekst)
- find_element_by_css_selector (velger)
- find_element_by_name (name)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
Ved å bruke metodene ovenfor kan vi finne et element på en webside og bruke det i vår automatiseringskode.
Klikk på forskjellige nettsider
click () -metoden i selen kan brukes til å klikke på forskjellige lenker og knappelementer som du fant ved å bruke metodene ovenfor. For eksempel vil du klikke på “Glemt konto?”På Facebook-siden
>>> link_button = driver.find_element_by_link_text ('Glemt konto?')>>> lenke_knapp.klikk ()
Send spesielle nøkler
Selen har også en modul som lar deg sende spesialnøkler (f.eks.g, Enter, Escape, Side ned, side opp osv.) mens du surfer på nettet. Du må importere denne modulen ved hjelp av følgende kommando
>>> fra selen.webdriver.felles.nøkler importerer nøklerFor eksempel leser du en artikkel på Wikipedia om USAs historie, men du er for lat til å trykke på NED-piltasten etter en stund. Du kan automatisere ved å sende denne nøkkelen til nettleseren ved hjelp av Selenium
fra selen import webdriverfra selen.webdriver.felles.nøkler importerer nøkler
importtid
driver = nettdriver.Chrome ('C: \ chromedriver')
# Åpne artikkellinken ved hjelp av get-metoden
sjåfør.få ("https: // no.wikipedia.org / wiki / United_States ")
#Begynn fra starten av siden
elem = sjåfør.find_element_by_tag_name ('html')
mens det er sant:
tid.sove (5)
elem.send_keys (nøkler.NED)
Hvordan automatisere nettleseren
I denne delen vil vi se hvordan vi kan automatisere nettleseren vår ved hjelp av noen brukssaker.
Logg inn på sosiale medier nettsteder automatisk
Med nettautomatisering kan du enkelt gjøre påloggingsprosessen automatisk. Hvis du sjekker dine sosiale medier nettsteder på et bestemt tidspunkt (si 8 pm) regelmessig, er det bra å automatisere denne prosessen. Følgende er koden for å automatisere loggføring i prosess av to sosiale medier 'facebook' og 'twitter' ved hjelp SELENIUM modul i Python.
# importerer webdriver fra selen-modulfra selen import webdriver
# importerer spesielle nøkler fra selen
fra selen.webdriver.felles.nøkler importerer nøkler
# skape 'driver' objekt for 'Google-Chrome'
driver = nettdriver.Chrome ('vei til Chrome-driver')
# maksimere vinduet
sjåfør.maksimere_vindu ()
# åpner facebook
sjåfør.få('http: // www.facebook.com')
# lokaliserer "E-post eller telefon" -element ved hjelp av "id" -attributtet
brukernavn = driver.find_element_by_id ('email')
# Oppgi brukernavn eller e-postadresse for facebook
brukernavn.send_keys ('Skriv inn brukernavn / e-post')
# lokaliserer "Passord" -elementet ved hjelp av "id" -attributtet
passord = sjåfør.find_element_by_id ('pass')
# angir passord for facebook
passord.send_keys ("Angi passord")
# lokalisere 'login button' element ved hjelp av 'id' attributtet og trykke 'Enter'
sjåfør.find_element_by_id ('u_0_b').send_keys (nøkler.TAST INN)
# åpner ny fane for twitter
sjåfør.execute_script ("vindu.åpen ('http: // www.twitter.com ',' tab2 '); ")
# bytter til ny fane
sjåfør.switch_to_window ('tab2')
#locating 'log in' element og klikk på det
sjåfør.finn_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klikk ()
# finner elementet 'Telefon, e-post eller brukernavn'
brukernavn = driver.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
# angir brukernavn for twitter
brukernavn.send_keys ('Angi brukernavn')
# lokaliserer 'Passord' element
passord = sjåfør.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# skriver inn passord for twitter
passord.send_keys ('Angi passord')
# å finne 'logg inn' -knappen og klikke på den
sjåfør.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.klikk ()
Ovenfor koden automatiserer nettleseren til å logge på nettsteder på sosiale medier. Først av alt opprettet vi et objekt av favorittleseren vår. I dette brukstilfellet har vi tatt 'Chrome' som en nettleser. For å skape objekt passerte vi banen til vår 'chromedriver' som et argument. Så kom vi inn på url av facebook og logget inn på Facebook ved å velge elementer og sende brukernavn og passord.
Etter dette åpnet vi en ny fane og gikk inn på nettadressen til Twitter. Etter dette byttet vi til den nye fanen da kontrollen av koden fortsatt var på første fane, selv om den andre kategorien var åpen. Så logget vi oss på twitter ved å velge elementer og sende brukernavn og passord.
Online shopping automatisering
Et annet godt eksempel på nettleserautomatisering kan være online shopping. For eksempel vil du kjøpe et kamera på nettet, men prisene er for høye. Du sjekker hver dag om prisen er innen ditt område eller ikke. Denne oppgaven kan automatiseres ved hjelp av SELENIUM og du kan unngå å sjekke prisen hver dag. Følgende kode vil informere deg via e-post om prisen på ønsket produkt er rimelig eller ikke. Hvis ønsket produkt er i salg, vil programmet varsle deg via en e-post.
# importerer webdriver fra selen-modulfra selen import webdriver
# importerer smtplib-modul for sending av e-post
importere smtplib
# definerer e-postfunksjon for å informere via e-post
def mail ():
# oppretter forbindelse til gmail-serveren med domenenavn og portnummer.
Dette er forskjellig fra hver e-postleverandør
forbindelse = smtplib.SMTP ('smtp.gmail.com ', 587)
# si hei til serveren
forbindelse.ehlo ()
# starter kryptert TLS-tilkobling
forbindelse.starttls ()
# logg inn på gmail-server med hovedadresse og passord
forbindelse.pålogging ('avsenderens e-postadresse', 'passord')
# sende e-post til deg selv og informere deg om prisen på kameraet
forbindelse.sendmail ('avsenderens e-postadresse', 'mottakerens e-postadresse',
'Emne: Du kan kjøpe kameraet')
# avslutningstilkobling
forbindelse.slutte()
# e-postfunksjon slutter her
# lanserer google chrome ved å oppgi stien til chromedriver som et argument
driver = nettdriver.Chrome ('vei til chromedriver')
# minimere kromvinduet
sjåfør.minimize_window ()
# åpningsgitter.pk nettsted
sjåfør.få('https: // www.daraz.pk /')
# lokaliseringselement i søkefeltet ved hjelp av id-attributt for å søke etter kamera
searchBar = driver.find_element_by_id ('q')
#skrivkamera i søkefeltet
søkelinje.send_keys ('kamera')
#locating search button element using xpath of element
søk = driver.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / knapp ')
#klikke på søkeknappen
Søk.klikk ()
# lokaliseringselement for ønsket produkt ved hjelp av xpath-attributt
produkt = driver.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 ')
# å klikke på ønsket produkt
produkt.klikk ()
# lokaliseringselement av pris ved hjelp av xpath-attributt
pris = sjåfør.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
# trekker ut tekst fra priselementet. Dette gir prisen på produktet som 'Rs. 24.500 '
pris = pris.tekst
# konvertere pris til streng
Pris = str (pris)
# definerer en tom matrise. Dette vil bli brukt til å trekke ut sifre fra pris som '24500'
form 'Rs. 24.500 '
num = []
# leser alle oppføringene i prisstrengen en etter en ved hjelp av for loop
for x i pris:
# sjekker om oppføringen er siffer eller ikke, ettersom vi bare vil ha sifre i pris
hvis x.isdigit ():
# bare legger til sifre i numlisten
num.legge til (x)
# blir med alle oppføringene i numlisten. Nå er prisen en streng som bare inneholder sifre
pris = ".bli med (num)
# konverterer prisstreng til heltall
pris = int (pris)
# sjekke om prisen er overkommelig eller ikke
hvis pris <= 25000:
# ringepostfunksjon for å informere deg om prisen
post()
# lukker nettleseren
sjåfør.slutte()
Ovenfor kode åpnes daraz.pk side og søker etter kameraet og informerer deg via e-post om prisen er overkommelig. Først av alt importerte vi SELENIUM og SMTPLIB moduler. Så definerte vi 'e-post' -funksjonen som sender deg e-post og informerer deg om at prisen er overkommelig når den ringes.
Etter dette åpnet vi kromleser ved hjelp av chromedriver og søkte etter 'daraz.pk '. Deretter finner vi ønsket produkt ved hjelp av elementer og deres attributter. Hvordan elementer er funnet og lokalisert, er beskrevet ovenfor. Prisen vi fikk var en streng, så vi konverterte denne strengen til heltall og deretter sjekket om prisen er overkommelig eller ikke. Hvis prisen er overkommelig, kan du ringe "mail" -funksjonen.
Opprette Cron-jobb
Over to automatiseringsskript kreves for å kjøre en gang om dagen på et bestemt tidspunkt. Vi kan klare dette ved hjelp av cron-jobb. Oppgaver som legges til crontab kan kjøres på et bestemt tidspunkt gjentatte ganger. For å legge til oppgaver ovenfor i crontab, kjør først og fremst følgende kommando i Linux Terminal.
[e-postbeskyttet]: ~ $ crontab -eOver kommandoen vil åpne crontab-filen for å redigere. Skriv inn følgende kommando på slutten av filen.
0 8 * * * python / sti / til / python / skriptVi ser oppføringer før kommando fra høyre til venstre.
- Første stjerne, fra høyre, betyr at denne kommandoen vil kjøre hverdags i uken.
- Andre stjerne betyr at denne kommandoen vil kjøre hver måned
- Tredje stjerne viser at denne kommandoen vil kjøre hver dag i måneden
- Fjerde oppføring er '8', noe som betyr at dette skriptet kjører på 8. time på dagen
- Femte oppføring som er '0' betyr at denne kommandoen vil kjøre på 0. minutt.
Så denne kommandoen vil kjøre klokka 8 hver dag.
Konklusjon
I denne artikkelen diskuterte vi hvordan du kan bruke SELENIUM sammen med Python for å automatisere nettleseren din ved hjelp av forskjellige teknikker. Du kan automatisere det daglige rutinearbeidet ditt, fylle ut skjemaer, laste ned tingene dine og mange ting ved hjelp av det. Vi diskuterte bare to eksempler her, men du kan automatisere hver ting et menneske kan gjøre manuelt med nettleseren.