Selén

Automatizácia prehľadávača pomocou selénu (Python)

Automatizácia prehľadávača pomocou selénu (Python)
SELÉNIUM je webový a otvorený nástroj, ktorý sa používa na ovládanie webového prehliadača v mnohých programovacích jazykoch. Je to nástroj tretej strany a je k dispozícii pre mnoho programovacích jazykov (napr.g. Java, Python, C #, PHP atď.). Má podporu pre takmer všetky prehľadávače. V tomto výučbe sa pozrieme na to, ako používať selén s Pythonom, pretože Python poskytuje pohodlné prostredie na používanie tohto nástroja. Rozhranie Selenium API pre Python umožňuje vášmu programu priamo ovládať váš prehliadač podobným spôsobom ako človek. Môže vám otvoriť nové karty, vyplniť vaše údaje, odoslať formuláre, kliknúť na rôzne odkazy a vykonať podobné akcie. Tu uvidíme, ako automatizujeme náš webový prehliadač pomocou selénu s Pythonom.

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én

ALEBO

pip3 nainštalovať selén

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

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.

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ľúčov

Naprí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 import
zo 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énu
z 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énu
z 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 -e

Prí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 / script

Položky pred príkazom vidíme sprava doľava.

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.

Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...
Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...