Selen

Nettleserautomatisering ved bruk av selen (Python)

Nettleserautomatisering ved bruk av selen (Python)
SELENIUM er et nettbasert og åpen kildekodeverktøy som brukes til å kontrollere nettleseren gjennom mange programmeringsspråk. Det er et tredjepartsverktøy og er tilgjengelig for mange programmeringsspråk (f.eks.g. Java, Python, C #, PHP osv.). Den har støtte for nesten alle nettlesere. I denne opplæringen vil vi se på hvordan du bruker Selen med Python fordi Python gir et behagelig miljø for å bruke dette verktøyet. Selenium API for Python lar programmet ditt direkte kontrollere nettleseren din på en lignende måte som et menneske gjør. Det kan åpne nye faner for deg, fylle ut informasjonen din, sende inn skjemaer, klikke på forskjellige lenker og andre lignende handlinger. Her vil vi se hvordan vi automatiserer nettleseren vår ved hjelp av selen med Python.

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 selen

ELLER

pip3 installer selen

Dette 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> python
Python 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.

Finne elementer ved hjelp av selen

For å finne elementer på en webside bruker vi 'finn_elementmetoden. Følgende er 'finn_elementmetoder tilgjengelig i SELENIUM.

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økler

For 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 webdriver
fra 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-modul
fra 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-modul
fra 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 -e

Over kommandoen vil åpne crontab-filen for å redigere. Skriv inn følgende kommando på slutten av filen.

0 8 * * * python / sti / til / python / skript

Vi ser oppføringer før kommando fra høyre til venstre.

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.

Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...
Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...
Mus Hvordan endre venstre og høyre museknapp på Windows 10 PC
Hvordan endre venstre og høyre museknapp på Windows 10 PC
Det er ganske vanlig at alle datamusenheter er ergonomisk designet for høyrehendte brukere. Men det er tilgjengelige musenheter som er spesielt design...