Inštalácia selénu
Pred použitím SELÉNIUM modul v pythone, musíme si ho nainštalovať. Spustite nasledujúci príkaz v termináli a nainštalujte ho.
pip nainštaluj selénALEBO
pip3 nainštalovať selénToto sa nainštaluje SELÉNIUM modul a teraz je pripravený na použitie.
Webové ovládače
Pred automatizáciou webového prehliadača pomocou modulu SELENIUM je potrebný webový ovládač zvoleného prehliadača. Aby sme mohli prehliadač Chrome automatizovať, musíme mať webový ovládač Chrome. Cesta, kam je umiestnený súbor webového ovládača, je odovzdaná ako argument. Webový ovládač interaguje s webovým prehliadačom prostredníctvom protokolu. Prejdite na nasledujúci odkaz a stiahnite si webové ovládače rôznych prehľadávačov.
https: // www.selénhq.org / download /
Začíname
Po nainštalovaní požadovaných modulov môžete otvoriť rozhranie python CLI a začať hrať s prehliadačom. Najprv teda importujme webdriver a ďalšie moduly, tieto moduly a triedy umožnia vášmu programu Python posielať stlačené klávesy a ďalšie informácie do vášho prehliadača.
C: \ Users \ Usama Azad> pythonPython 3.6.4 (v3.6.4: d48eceb, 19. decembra 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] na systéme win32
Ďalšie informácie získate zadaním výrazu „help“, „copyright“, „credit“ alebo „license“.
>>> z webového ovládača na selén
>>> zo selénu.webdriver.bežné.kľúče na import kľúčov
#cesta k vašim chrome ovládačom
>>> driver = webdriver.Chrome („C: \ chromedriver“)
Tým sa vám otvorí nové okno prehliadača Chrome. Teraz môžete dostať selén na akúkoľvek webovú stránku, ktorá používa .metóda get (). Táto metóda otvorí webovú stránku a počká na jej načítanie. Potom môžete zadať ďalší príkaz.
>>> vodič.get ("https: // www.Facebook.com ")
Ako nájsť prvky na webovej stránke
Nasledujúcim spôsobom nájdeme konkrétny prvok na webovej stránke.
- Najskôr stlačte F12 Na pravej strane okna sa otvorí zdrojová stránka, ako je zobrazené nižšie
- Teraz stlačte 'Ctrl + Shift + Calebo kliknite na symbol v ľavom hornom rohu zdrojovej stránky.
- Posuňte šípku naE-mail alebo telefón“a kliknite na. Tento prvok bude vybraný a zdrojový kód tohto prvku je zvýraznený na zdrojovej stránke, ako je zobrazené nižšie. Je vidieť, že pre vybraný prvok máme nasledujúce atribúty
- meno = „e-mail“
- class = “inputtext login_form_input_box”
- id = “email”
Môžeme nájsťE-mail alebo telefón'pomocou niektorého z vyššie uvedených atribútov.
- Pokiaľ nemáme žiaden z vyššie uvedených atribútov, môžeme element zvoliť aj pomocou 'XPath„. Ak chcete skopírovať XPath, kliknite pravým tlačidlom myši na zvýraznený zdrojový kód na zdrojovej stránke. Potom choď naKopírovať> Kopírovať XPath„.
Vyhľadanie prvkov pomocou selénu
Na nájdenie prvkov na webovej stránke používame „find_element„metóda. Nasledujú „find_element"metódy dostupné v SELÉNIUM.
- find_element_by_class_name (meno)
- find_element_by_tag_name (meno)
- find_element_by_link_text (text)
- find_element_by_css_selector (selektor)
- find_element_by_name (meno)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
Pomocou vyššie uvedených metód môžeme vyhľadať prvok na webovej stránke a použiť ho v našom automatizačnom kóde.
Kliknutím na rôzne prvky webovej stránky
metódu click () v seléne je možné použiť na klikanie na rôzne odkazy a prvky tlačidiel, ktoré ste našli pomocou vyššie uvedených metód. Napríklad chcete kliknúť na „Zabudnutý účet?”Na facebookovej stránke
>>> link_button = ovládač.find_element_by_link_text ('Zabudnutý účet?")>>> odkaz_button.kliknite ()
Pošlite špeciálne kľúče
Selenium má tiež modul, ktorý vám umožňuje posielať špeciálne kľúče (napr.g, Enter, Escape, Page down, page up atď.) pri prehľadávaní webu. Tento modul musíte importovať pomocou nasledujúceho príkazu
>>> zo selénu.webdriver.bežné.kľúče na import kľúčovNapríklad čítate článok na Wikipédii o histórii Spojených štátov, ale ste príliš leniví na to, aby ste po chvíli stlačili kláves ŠÍPKA NADOL. Môžete automatizovať odoslaním tohto kľúča do prehliadača pomocou selénu
z webového ovládača na selén na importzo selénu.webdriver.bežné.kľúče na import kľúčov
čas importu
vodič = webdriver.Chrome („C: \ chromedriver“)
#Otvorte odkaz na článok pomocou metódy get
vodič.get ("https: // sk.wikipedia.org / wiki / United_States ")
# Začnite od začiatku stránky
elem = vodič.find_element_by_tag_name ('html')
zatiaľ čo je pravda:
čas.spánok (5)
elem.send_keys (Klávesy.DOLE)
Ako automatizovať prehliadač
V tejto časti uvidíme, ako automatizovať náš webový prehliadač pomocou niektorých prípadov použitia.
Prihláste sa na webové stránky sociálnych médií automaticky
Pomocou automatizácie webu môžete ľahko automatizovať proces prihlásenia. Ak svoje webové stránky sociálnych médií pravidelne kontrolujete v konkrétny čas (napríklad o 20:00), je dobré tento proces automatizovať. Nasleduje kód na automatizáciu prihlasovania pomocou dvoch webov sociálnych médií „facebook“ a „twitter“ SELÉNIUM modul v Pythone.
# importuje sa webdriver z modulu selénuz webového ovládača na selén na import
# import špeciálnych kľúčov zo selénu
zo selénu.webdriver.bežné.kľúče na import kľúčov
# vytvorenie objektu „ovládača“ pre „Google-Chrome“
vodič = webdriver.Chrome („cesta k ovládaču Chrome“)
# maximalizácia okna
vodič.maximize_window ()
# otvorenie facebooku
vodič.dostať ('http: // www.Facebook.com")
# vyhľadanie prvku „E-mail alebo telefón“ pomocou atribútu „id“
userName = ovládač.find_element_by_id ('email')
# Zadanie používateľského mena alebo e-mailu pre facebook
meno používateľa.send_keys ('Zadajte užívateľské meno / e-mail')
# vyhľadanie prvku „Heslo“ pomocou atribútu „id“
heslo = vodič.find_element_by_id ('pass')
# zadanie hesla pre facebook
heslo.send_keys ("Zadajte heslo")
# vyhľadanie prvku „tlačidlo prihlásenia“ pomocou atribútu „id“ a stlačenie klávesu „Enter“
vodič.find_element_by_id ('u_0_b').send_keys (Klávesy.ENTER)
# otvorenie novej karty pre twitter
vodič.okno execute_script (".otvorené ('http: // www.twitter.com ',' tab2 '); ")
# prepnutie na novú kartu
vodič.switch_to_window ('tab2')
# umiestnite prvok „prihlásiť sa“ a kliknite naň
vodič.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').kliknite ()
# vyhľadanie prvku „Telefón, e-mail alebo používateľské meno“
userName = ovládač.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
poľná sada / div [1] / vstup ')
# zadanie používateľského mena pre twitter
meno používateľa.send_keys ('Zadajte užívateľské meno')
# vyhľadanie prvku „Heslo“
heslo = vodič.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
sada polí / div [2] / vstup ')
# zadanie hesla pre twitter
heslo.send_keys ('Zadajte heslo')
# vyhľadanie tlačidla „prihlásiť sa“ a kliknutie na toto tlačidlo
vodič.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.kliknite ()
Vyššie uvedený kód automatizuje prehliadač na prihlásenie na webové stránky sociálnych médií. Najskôr sme vytvorili objekt nášho obľúbeného prehliadača. V tomto prípade sme ako prehliadač zvolili „Chrome“. Pri vytváraní objektu sme ako argument prešli cestu nášho „chromedriveru“. Potom sme zadali adresu URL facebooku a prihlásili sme sa na Facebook výberom prvkov a odovzdaním používateľského mena a hesla.
Potom sme otvorili novú kartu a zadali adresu URL twitteru. Potom sme prešli na novú kartu, pretože kontrola kódu bola stále na prvej karte, aj keď druhá karta bola otvorená. Potom sme sa prihlásili na twitter výberom prvkov a odovzdaním používateľského mena a hesla.
Automatizácia online nakupovania
Ďalším dobrým príkladom automatizácie prehľadávača môže byť online nakupovanie. Napríklad chcete kúpiť fotoaparát online, ale ceny sú príliš vysoké. Denne kontrolujete, či je cena vo vašom rozmedzí alebo nie. Túto úlohu je možné automatizovať pomocou SELÉNIUM a môžete sa vyhnúť kontrole ceny každý deň. Nasledujúci kód vás bude poštou informovať, či je cena požadovaného produktu prijateľná alebo nie. Ak je požadovaný produkt v predaji, program vás na to upozorní prostredníctvom e-mailu.
# importuje sa webdriver z modulu selénuz webového ovládača na selén na import
# importovanie modulu smtplib na odosielanie pošty
import smtplib
# definovanie funkcie pošty na informovanie prostredníctvom e-mailu
def mail ():
# nadviazanie spojenia s poštovým serverom pomocou názvu domény a čísla portu.
To sa líši u každého poskytovateľa e-mailu
pripojenie = smtplib.SMTP ('smtp.gmail.com ', 587)
# pozdravím server
spojenie.ehlo ()
# začína šifrované pripojenie TLS
spojenie.starttls ()
# Prihláste sa na server Gmail pomocou hlavnej adresy a hesla
spojenie.prihlásenie ('poštová adresa odosielateľa', 'heslo')
# zasielanie pošty vám s informáciami o cene fotoaparátu
spojenie.sendmail ('poštová adresa odosielateľa', 'poštová adresa príjemcu'),
„Predmet: Môžete si kúpiť fotoaparát“)
# končiace pripojenie
spojenie.skončiť ()
Tu končí # funkcia pošty
# spustenie google chrome poskytnutím cesty chromedriver ako argumentu
vodič = webdriver.Chrome („cesta k chromedriveru“)
# minimalizácia chrómového okna
vodič.minimal_window ()
# otvorenie draz.stránka pk
vodič.dostať ('https: // www.daraz.pk /")
# vyhľadávací prvok vyhľadávacieho panela pomocou atribútu id na vyhľadanie fotoaparátu
searchBar = vodič.find_element_by_id ('q')
# kamera na písanie do vyhľadávacieho panela
bar vyhľadávania.send_keys ('camera')
# umiestnenie vyhľadávacieho prvku pomocou xpath prvku
hľadať = vodič.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / tlačidlo ')
# kliknutie na tlačidlo vyhľadávania
Vyhľadávanie.kliknite ()
# vyhľadanie prvku požadovaného produktu pomocou atribútu xpath
produkt = vodič.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 ')
# kliknutie na požadovaný produkt
výrobok.kliknite ()
# vyhľadanie prvku ceny pomocou atribútu xpath
cena = vodič.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
# extrahovanie textu z cenového prvku. To dáva cenu produktu ako „Rs. 24 500 '
cena = cena.text
# prepočet ceny na reťazec
Cena = str (cena)
# definovanie prázdneho poľa. Toto sa použije pri extrahovaní číslic z ceny ako „24500“
formulár „Rs. 24 500 '
num = []
# čítanie všetkých záznamov cenového reťazca jeden po druhom pomocou cyklu for
pre x v cene:
# kontrola, či je položka digitálna, alebo nie, pretože v cene chceme mať iba číslice
ak x.isdigit ():
# pridanie iba číslic do číselného zoznamu
číslo.pripojiť (x)
# spájanie všetkých záznamov z číselného zoznamu. Cena je teraz reťazec obsahujúci iba číslice
cena = ".pripojiť sa (počet)
# prevádza reťazec ceny na celé číslo
cena = int (cena)
# kontrola, či je cena prijateľná alebo nie
ak cena <= 25000:
# funkcia volania pošty, aby sme vás informovali o cene
mail ()
# zatvára sa prehliadač
vodič.skončiť ()
Vyššie uvedený kód otvára daraz.stránka pk a vyhľadá kameru a prostredníctvom e-mailu vás bude informovať, či je cena prijateľná. V prvom rade sme doviezli SELÉNIUM a SMTPLIB modulov. Potom sme definovali funkciu „mail“, ktorá vám pošle poštu s informáciou, že cena je pri volaní dostupná.
Potom sme otvorili prehliadač Chrome pomocou chromedriveru a vyhľadali výraz „daraz“.pk '. Potom pomocou prvkov a ich atribútov nájdeme požadovaný produkt. Ako sa nachádzajú a nachádzajú prvky, bolo popísané vyššie. Cena, ktorú sme dostali, bol reťazec, takže sme tento reťazec previedli na celé číslo a potom skontrolovali, či je cena dostupná alebo nie. Ak je cena prijateľná, zavolajte funkciu „mail“.
Vytvára sa úloha Cron
Vyššie ako dva automatizačné skripty sú potrebné na spustenie jedenkrát denne v konkrétny čas. Môžeme to spravovať pomocou úlohy cron. Úlohy, ktoré sa pridávajú do programu crontab, je možné spúšťať v konkrétnom čase opakovane. Ak chcete pridať vyššie uvedené úlohy do programu crontab, najskôr spustite nasledujúci príkaz v systéme Linux Terminal.
[chránené e-mailom]: ~ $ crontab -ePríkazom hore sa otvorí súbor crontab, ktorý chcete upraviť. Na konci súboru zadajte nasledujúci príkaz.
0 8 * * * python / path / to / python / scriptPoložky pred príkazom vidíme sprava doľava.
- Prvá hviezdička sprava znamená, že tento príkaz sa bude spúšťať každý týždeň.
- Druhá hviezdička znamená, že tento príkaz sa bude spúšťať každý mesiac
- Tretia hviezdička ukazuje, že tento príkaz bude bežať každý deň v mesiaci
- Štvrtá položka je „8“, čo znamená, že tento skript bude bežať o 8. hodine dňa
- Piaty záznam, ktorý má hodnotu „0“, znamená, že tento príkaz bude spustený v 0. minúte.
Tento príkaz teda bude bežať každý deň o 8:00.
Záver
V tomto článku sme diskutovali o tom, ako môžete používať SELÉNIUM spolu s Pythonom na automatizáciu prehliadača pomocou rôznych techník. Pomocou nej môžete automatizovať svoju každodennú rutinnú prácu, vypĺňať formuláre, sťahovať svoje veci a veľa vecí. Diskutovali sme tu iba o dvoch príkladoch, ale môžete automatizovať každú vec, ktorú môže človek pomocou prehliadača vykonať manuálne.