Seleenin asennus
Ennen käyttöä SELEENI moduuli pythonissa, meidän on asennettava se. Asenna seuraava komento terminaalissa.
pip asenna seleeniTAI
pip3 asenna seleeniTämä asennetaan SELEENI moduuli ja nyt se on käyttövalmis.
Verkko-ohjaimet
Ennen verkkoselaimen automatisointia SELENIUM-moduulilla vaaditaan valitun selaimen verkkoajuri. Chrome-selaimen automatisoimiseksi meillä on oltava Chrome-verkkoajuri. Polku, johon web-ohjaintiedosto sijoitetaan, välitetään argumenttina. Verkkoajuri on vuorovaikutuksessa selaimen kanssa protokollan kautta. Siirry seuraavaan linkkiin ladataksesi eri selainten verkko-ohjaimet.
https: // www.seleenihq.org / lataa /
Päästä alkuun
Vaadittujen moduulien asentamisen jälkeen voit avata python CLI: n ja aloittaa pelaamisen selaimellasi. Joten tuodaan ensin verkko-ohjain ja muut moduulit, näiden moduulien ja luokkien avulla Python-ohjelmasi voi lähettää näppäilyjä ja muuta tietoa selaimeesi.
C: \ Käyttäjät \ Usama Azad> pythonPython 3.6.4 (v3.6.4: d48eceb, 19. joulukuuta 2017, 06:54:40) [MSC v.1900 64-bittinen (AMD64)] Win32: lla
Kirjoita "help", "copyright", "credits" tai "license" saadaksesi lisätietoja.
>>> seleenin tuonti -driverilta
>>> seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
#polku kromiohjaimillesi
>>> ohjain = verkko-ohjain.Kromi ('C: \ chromedriver')
Tämä avaa uuden Chrome-selainikkunan sinulle. Nyt voit hankkia seleeniä mihin tahansa verkkosivustoon .get () -menetelmä. Tämä menetelmä avaa verkkosivuston ja odottaa sen latautumista, sitten voit kirjoittaa seuraavan komennon.
>>> kuljettaja.get ("https: // www.Facebook.com ")
Kuinka löytää elementtejä verkkosivulta
Voimme löytää tietyn elementin verkkosivulta seuraamalla menetelmää.
- Paina ensin F12 Lähdesivu avautuu ikkunan oikeaan reunaan alla olevan kuvan mukaisesti
- Paina nyt 'Ctrl + Vaihto + Ctai napsauta lähdesivun vasemmassa yläkulmassa olevaa symbolia.
- Siirrä nuoli 'Sähköposti tai puhelin'ja napsauta. Tämä elementti valitaan valitulla tavalla ja tämän elementin lähdekoodi korostetaan lähdesivulla alla olevan kuvan mukaisesti. Voidaan nähdä, että meillä on seuraavat määritteet valitulle elementille
- nimi = "sähköposti"
- class = “inputtext login_form_input_box”
- id = “sähköposti”
Voimme löytää 'Sähköposti tai puhelin'-elementtiä käyttämällä mitä tahansa yllä olevista määritteistä.
- Jos meillä ei ole mitään yllä mainituista määritteistä, voimme myös valita elementin 'XPath'. Kopioi XPath napsauttamalla hiiren kakkospainikkeella korostettua lähdekoodia lähdesivulla. Mene sittenKopioi> Kopioi XPath'.
Elementtien sijainti seleenillä
Elementtien löytämiseksi verkkosivulta käytämme 'etsi_elementtimenetelmä. Seuraavat ovatetsi_elementti"käytettävissä olevat menetelmät SELEENI.
- etsi_elementti_luokan_nimi (nimi)
- find_element_by_tag_name (nimi)
- find_element_by_link_text (teksti)
- find_element_by_css_selector (valitsin)
- find_element_by_name (nimi)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
Yllä olevia menetelmiä käyttämällä voimme etsiä elementin verkkosivulta ja käyttää sitä automaatiokoodissamme.
Napsauttamalla eri verkkosivun elementtejä
click () -menetelmää seleenissä voidaan käyttää napsauttamaan eri linkkejä ja painike-elementtejä, jotka löysit yllä olevilla menetelmillä. Haluat esimerkiksi napsauttaa “Unohdettu tili?”Facebook-sivulla
>>> link_button = ohjain.find_element_by_link_text ('Unohdettu tili?')>>> link_painike.klikkaus()
Lähetä erikoisavaimet
Seleenissä on myös moduuli, jonka avulla voit lähettää erikoisavaimia (esim.g, Enter, Escape, Page down, sivu ylös jne.) selatessasi Internetiä. Tämä moduuli on tuotava seuraavalla komennolla
>>> seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimetLuet esimerkiksi Wikipediassa artikkelin Yhdysvaltojen historiasta, mutta olet liian laiska painamaan ALANUOLI-näppäintä jonkin ajan kuluttua. Voit automatisoida lähettämällä tämän avaimen selaimeen Seleniumin avulla
seleenin tuonti -ohjaimestaseleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
tuontiaika
ohjain = verkko-ohjain.Kromi ('C: \ chromedriver')
#Avaa artikkelilinkki get-menetelmällä
kuljettaja.get ("https: // fi.wikipedia.org / wiki / United_States ")
#Aloita sivun alusta
elem = kuljettaja.find_element_by_tag_name ('html')
kun taas totta:
aika.nukkua (5)
elem.send_keys (Avaimet.ALAS)
Selaimen automatisointi
Tässä osassa nähdään, miten verkkoselaimesi voidaan automatisoida joidenkin käyttötapausten avulla.
Kirjaudu sosiaalisen median verkkosivustoille automaattisesti
Verkkoautomaation avulla voit tehdä kirjautumisprosessistasi helposti automaattisen. Jos tarkistat sosiaalisen median verkkosivustojasi tiettynä ajankohtana (esimerkiksi klo 20) säännöllisesti, on hyvä automatisoida tämä prosessi. Seuraava on koodi, jolla automatisoidaan kirjautumista kahden sosiaalisen median sivuston 'facebook' ja 'twitter' avulla SELEENI moduuli Pythonissa.
# tuodaan verkko-ohjain seleenimoduulistaseleenin tuonti -ohjaimesta
# erityisavainten tuominen seleenistä
seleenistä.verkko-ohjain.yleinen.avaimet tuovat avaimet
# luodaan ohjainobjekti Google-Chromelle
ohjain = verkko-ohjain.Chrome ('polku Chrome-ohjaimeen')
# maksimoi ikkuna
kuljettaja.maksimoida_ikkuna ()
# Facebookin avaaminen
kuljettaja.saada('http: // www.Facebook.com')
# Sähköposti tai puhelin -elementin löytäminen id-attribuutilla
käyttäjänimi = ohjain.find_element_by_id ('sähköposti')
# Syötä käyttäjätunnus tai sähköpostiosoite facebookille
käyttäjänimi.send_keys ('Anna käyttäjänimi / sähköpostiosoite')
# etsi 'Salasana' -elementti käyttämällä 'id' -attribuuttia
passWord = ohjain.find_element_by_id ('pass')
# salasanan kirjoittaminen facebookille
Salasana.send_keys ("Anna salasana")
# etsi 'kirjautumispainike' -elementti id-attribuutilla ja paina Enter-näppäintä
kuljettaja.find_element_by_id ('u_0_b').send_keys (Avaimet.TULLA SISÄÄN)
# uuden välilehden avaaminen Twitterille
kuljettaja.execute_script ("ikkuna.auki ('http: // www.viserrys.com ',' tab2 '); ")
# vaihtaminen uuteen välilehteen
kuljettaja.switch_to_window ('välilehti2')
#locating 'log in' -elementti ja napsauttamalla sitä
kuljettaja.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klikkaus()
# Paikanna Puhelin, sähköposti tai käyttäjänimi -elementti
käyttäjänimi = ohjain.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / lomake /
kenttäsarja / div [1] / tulo ')
# syötetään käyttäjänimi Twitterille
käyttäjänimi.send_keys ('Anna käyttäjänimi')
# etsi 'Salasana' -elementti
passWord = ohjain.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / lomake /
kenttäsarja / div [2] / tulo ')
# kirjoittamalla salasana twitterille
Salasana.send_keys ('Anna salasana')
# etsi 'Kirjaudu sisään' -painike ja napsauta sitä
kuljettaja.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / painike')
.klikkaus()
Yllä oleva koodi automatisoi selaimen kirjautumaan sosiaalisen median verkkosivustoille. Ensinnäkin loimme kohteen suosikkiselaimestamme. Tässä käyttötapauksessa olemme ottaneet Chrome-selaimen. Objektin luomiseksi ohitimme argumenttina 'chromedriverin' polun. Sitten syötimme facebookin URL-osoitteen ja kirjauduimme sisään Facebookiin valitsemalla elementit ja välittämällä käyttäjänimen ja salasanan.
Tämän jälkeen avasimme uuden välilehden ja annoimme twitter-osoitteen. Tämän jälkeen vaihdoimme uudelle välilehdelle, koska koodin hallinta oli edelleen ensimmäisellä välilehdellä, vaikka toinen välilehti oli auki. Sitten kirjauduimme twitteriin valitsemalla elementit ja välittämällä käyttäjänimen ja salasanan.
Verkkokaupan automaatio
Toinen hyvä esimerkki selaimen automaatiosta voi olla verkkokaupoissa. Haluat esimerkiksi ostaa kameran verkosta, mutta hinnat ovat liian korkeat. Tarkistat päivittäin, onko hinta omalla alueella vai ei. Tämä tehtävä voidaan automatisoida SELEENI ja voit välttää hinnan tarkistamisen päivittäin. Seuraava koodi ilmoittaa sinulle postitse, onko haluamasi tuotteen hinta edullinen vai ei. Jos haluamasi tuote on myynnissä, ohjelma ilmoittaa siitä sinulle sähköpostitse.
# tuodaan verkko-ohjain seleenimoduulistaseleenin tuonti -ohjaimesta
# smtplib-moduulin tuominen postin lähettämistä varten
tuoda smtplib
# sähköpostitoiminnon määrittäminen sähköpostitse tiedottamiseksi
def post ():
# yhteyden muodostaminen Gmail-palvelimeen verkkotunnuksella ja portin numerolla.
Tämä eroaa jokaisen sähköpostipalvelun tarjoajan mukaan
yhteys = smtplib.SMTP ('smtp.gmail.com ', 587)
# tervehti palvelimelle
yhteys.ehlo ()
# salatun TLS-yhteyden aloittaminen
yhteys.starttls ()
# kirjaudu Gmail-palvelimeen pääosoitteellasi ja salasanallasi
yhteys.kirjautuminen ('lähettäjän sähköpostiosoite', 'salasana')
# postin lähettäminen itsellesi ja kameran hinnan ilmoittaminen
yhteys.sendmail ('lähettäjän sähköpostiosoite', 'vastaanottajan sähköpostiosoite',
Aihe: Voit ostaa kameran)
# yhteys päättyy
yhteys.lopettaa()
# postitoiminto päättyy tähän
# google chromen käynnistäminen antamalla argumentiksi chromedriver-polku
kuljettaja = verkko-ohjain.Chrome ('polku kromiohjaimeen')
# minimoi kromi-ikkuna
kuljettaja.minimoi ikkuna ()
# avaava draz.pk-sivusto
kuljettaja.saada('https: // www.daraz.pk /')
# hakupalkin elementin sijainti ID-määritteen avulla kameran etsimiseen
searchBar = ohjain.find_element_by_id ('q')
#kirjoittava kamera hakupalkissa
hakupalkki.send_keys ('kamera')
#locating hakupainike-elementti elementin xpath-polkua käyttämällä
haku = ohjain.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ muoto / div / div [2] / painike ')
# napsauttamalla hakupainiketta
Hae.klikkaus()
# haluamasi tuotteen elementin sijainti xpath-määritteellä
tuote = ohjain.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 ')
# napsauttamalla haluamaasi tuotetta
tuote.klikkaus()
# hinnan elementti xpath-määritteellä
hinta = kuljettaja.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
# puretaan tekstiä hintaelementistä. Tämä antaa tuotteen hinnan, kuten 'Rs. 24 500 '
hinta = hinta.teksti
# hinnan muuntaminen merkkijonoksi
Hinta = str (hinta)
# määritetään tyhjä taulukko. Tätä käytetään purettaessa numeroita hinnasta, kuten '24500'
muodosta 'Rs. 24 500 '
numero = []
# lukee kaikki merkkijonon merkinnät yksitellen silmukan avulla
x: lle hinnassa:
# tarkistaa, onko merkintä numeroinen vai ei, koska haluamme vain numeroita hinnassa
jos x.isdigit ():
# vain numeroiden lisääminen numeroluetteloon
numero.liitä (x)
# yhdistää kaikki numeroluettelon merkinnät. Nyt hinta on merkkijono, joka sisältää vain numeroita
hinta = ".liittyä (numero)
# muuntaa hintajonon kokonaislukuksi
hinta = int (hinta)
# tarkistaa, onko hinta edullinen vai ei
jos hinta <= 25000:
# soittopostitoiminto ilmoittaa sinulle hinnasta
posti ()
# sulkeutuva selain
kuljettaja.lopettaa()
Koodin yläpuolella avautuu daraz.pk-sivusto ja etsii kameraa ja ilmoittaa sinulle sähköpostitse, jos hinta on edullinen. Ensinnäkin tuotiin SELEENI ja SMTPLIB moduulit. Sitten määriteltiin "posti" -toiminto, joka lähettää sinulle sähköpostia, jossa ilmoitetaan, että hinta on edullinen, kun soitetaan.
Tämän jälkeen avasimme kromiselaimen chromedriverin avulla ja etsimme sanaa 'daraz.pk '. Sitten löydämme haluamasi tuotteen elementtien ja niiden määritteiden avulla. Elementtien löytäminen ja sijoittaminen on kuvattu edellä. Saamamme hinta oli merkkijono, joten muutimme tämän merkkijonon kokonaisluvuksi ja tarkistimme sitten, onko hinta edullinen vai ei. Jos hinta on edullinen, soita postitoimintoon.
Cron-työn luominen
Kahden edellä olevan automaatioskriptin on suoritettava kerran päivässä tiettynä ajankohtana. Voimme hallita tätä käyttämällä cron-työtä. Crontabiin lisätyt tehtävät voidaan suorittaa tietyllä hetkellä toistuvasti. Jos haluat lisätä yllä olevat tehtävät crontabiin, suorita ensin seuraava komento Linux-terminaalissa.
[sähköposti suojattu]: ~ $ crontab -eYllä oleva komento avaa muokattavan crontab-tiedoston. Kirjoita tiedoston lopussa seuraava komento.
0 8 * * * python / path / to / python / scriptNäemme merkinnät ennen komentoa oikealta vasemmalle.
- Ensimmäinen tähti oikealta tarkoittaa, että tämä komento suoritetaan joka päivä viikossa.
- Toinen tähti tarkoittaa, että tämä komento suoritetaan kuukausittain
- Kolmas tähti osoittaa, että tämä komento suoritetaan joka päivä kuukaudessa
- Neljäs merkintä on '8', mikä tarkoittaa, että tämä komentosarja suoritetaan päivän 8. tunnissa
- Viides merkintä, joka on '0', tarkoittaa, että tämä komento suoritetaan 0. minuutilla.
Joten tämä komento suoritetaan päivittäin kello 8.
Johtopäätös
Tässä artikkelissa keskustelimme siitä, miten voit käyttää SELEENI yhdessä Pythonin kanssa automatisoimaan selaimesi eri tekniikoilla. Voit automatisoida päivittäisen rutiinityösi, täyttää lomakkeita, ladata tavarasi ja paljon muuta sen avulla. Keskustelimme täällä vain kahdesta esimerkistä, mutta voit automatisoida jokaisen ihmisen tekemän manuaalisesti selaimen avulla.