Selen

Automatizace prohlížeče pomocí selenu (Python)

Automatizace prohlížeče pomocí selenu (Python)
SELEN je webový a otevřený nástroj, který se používá k ovládání webového prohlížeče v mnoha programovacích jazycích. Je to nástroj třetí strany a je k dispozici pro mnoho programovacích jazyků (např.G. Java, Python, C #, PHP atd.). Má podporu pro téměř všechny prohlížeče. V tomto kurzu se podíváme na to, jak používat selen v Pythonu, protože Python poskytuje pohodlné prostředí pro použití tohoto nástroje. Selenium API pro Python umožňuje vašemu programu přímo ovládat váš prohlížeč podobným způsobem jako člověk. Může vám otevřít nové karty, vyplnit vaše údaje, odeslat formuláře, kliknout na různé odkazy a další podobné akce. Zde uvidíme, jak automatizujeme náš webový prohlížeč pomocí selenu s Pythonem.

Instalace selenu

Před použitím SELEN modul v pythonu, musíme jej nainstalovat. Spusťte následující příkaz v terminálu a nainstalujte jej.

pip nainstalujte selen

NEBO

pip3 nainstalujte selen

Tím se nainstaluje SELEN modul a nyní je připraven k použití.

Webové ovladače

Před automatizací webového prohlížeče pomocí modulu SELENIUM je vyžadován webový ovladač zvoleného prohlížeče. Abychom mohli prohlížeč Chrome automatizovat, musíme mít webový ovladač Chrome. Cesta, kam je umístěn soubor webového ovladače, je předána jako argument. Webový ovladač interaguje s webovým prohlížečem prostřednictvím protokolu. Chcete-li stáhnout webové ovladače různých prohlížečů, přejděte na následující odkaz.

https: // www.seleniumhq.org / stáhnout /

Začínáme

Po instalaci požadovaných modulů můžete otevřít python CLI a začít hrát s vaším prohlížečem. Nejprve tedy importujme webdriver a další moduly, tyto moduly a třídy umožní vašemu Pythonu posílat úhozy a další informace do vašeho prohlížeče.

C: \ Users \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19. prosince 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] na win32
Další informace získáte zadáním „help“, „copyright“, „credit“ nebo „license“.
>>> z webového ovladače pro import selenu
>>> ze selenu.webdriver.běžný.klíče importovat klíče
#cesta k vašim chromovaným ovladačům
>>> driver = webdriver.Chrome ('C: \ chromedriver')

Otevře se vám nové okno prohlížeče Chrome. Nyní můžete selen dostat na jakýkoli web, který používá .metoda get (). Tato metoda otevře web a počká na jeho načtení, poté můžete zadat další příkaz.

>>> řidič.get ("https: // www.Facebook.com ")

Jak najít prvky na webové stránce

Můžeme najít konkrétní prvek na webové stránce následujícím způsobem.

Vyhledání prvků pomocí selenu

K vyhledání prvků na webové stránce používáme 'find_element„metoda. Následujífind_element"metody dostupné v SELEN.

Pomocí výše uvedených metod můžeme vyhledat prvek na webové stránce a použít jej v našem automatizačním kódu.

Kliknutím na různé prvky webové stránky

metodu click () v selenu lze použít ke kliknutí na různé odkazy a prvky tlačítek, které jste našli pomocí výše uvedených metod. Například chcete kliknout na „Zapomenutý účet?”Na stránce Facebook

>>> link_button = ovladač.find_element_by_link_text ('Zapomenutý účet?')
>>> odkaz_button.klikněte ()

Odeslat speciální klíče

Selenium má také modul, který umožňuje odesílat speciální klíče (např.g, Enter, Escape, Page down, page up atd.) při procházení webu. Tento modul musíte importovat pomocí následujícího příkazu

>>> ze selenu.webdriver.běžný.klíče importovat klíče

Například čtete článek na Wikipedii o historii Spojených států, ale jste příliš líní na to, abyste po chvíli stiskli klávesu ŠIPKA DOLŮ. Můžete automatizovat odesláním tohoto klíče do prohlížeče pomocí selenu

z webového ovladače pro import selenu
ze selenu.webdriver.běžný.klíče importovat klíče
čas importu
driver = webdriver.Chrome ('C: \ chromedriver')
#Otevřete odkaz na článek pomocí metody get
Řidič.get ("https: // en.wikipedia.org / wiki / United_States ")
# Začněte od začátku stránky
elem = řidič.find_element_by_tag_name ('html')
zatímco je pravda:
 
čas.spánek (5)
elem.send_keys (klíče.DOLŮ)

Jak automatizovat prohlížeč

V této části uvidíme, jak automatizovat náš webový prohlížeč pomocí některých případů použití.

Přihlaste se na webové stránky sociálních médií automaticky

Díky webové automatizaci můžete snadno provést automatické přihlášení. Pokud pravidelně kontrolujete své weby na sociálních médiích v určitou dobu (řekněme ve 20:00), je dobré tento proces automatizovat. Následuje kód pro automatizaci přihlašování pomocí dvou webů sociálních médií „facebook“ a „twitter“ SELEN modul v Pythonu.

# importuje webdriver z modulu selenu
z webového ovladače pro import selenu
 
# import speciálních klíčů ze selenu
ze selenu.webdriver.běžný.klíče importovat klíče
 
# vytvoření objektu „ovladače“ pro „Google-Chrome“
driver = webdriver.Chrome („cesta k ovladači Chrome“)
 
# maximalizovat okno
Řidič.maximize_window ()
 
# otevření facebooku
Řidič.dostat('http: // www.Facebook.com')
 
# vyhledání prvku „E-mail nebo telefon“ pomocí atributu „id“
uživatelské jméno = ovladač.find_element_by_id ('email')
 
# Zadání uživatelského jména nebo e-mailu pro facebook
uživatelské jméno.send_keys ('Zadejte uživatelské jméno / e-mail')
 
# vyhledání prvku „Heslo“ pomocí atributu „id“
heslo = řidič.find_element_by_id ('pass')
 
# zadání hesla pro facebook
Heslo.send_keys ("Zadejte heslo")
 
# vyhledání prvku „tlačítko pro přihlášení“ pomocí atributu „id“ a stisknutí klávesy „Enter“
Řidič.find_element_by_id ('u_0_b').send_keys (klíče.ENTER)
 
# otevření nové karty pro twitter
Řidič.okno execute_script (".otevřít ('http: // www.cvrlikání.com ',' tab2 '); ")
 
# přepnutí na novou kartu
Řidič.switch_to_window ('tab2')
 
# umístění prvku „přihlášení“ a kliknutí na něj
Řidič.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klikněte ()
 
# vyhledání prvku „Telefon, e-mail nebo uživatelské jméno“
uživatelské jméno = ovladač.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
pole / div [1] / vstup ')
 
# zadání uživatelského jména pro twitter
uživatelské jméno.send_keys ('Zadejte uživatelské jméno')
 
# vyhledání prvku „Heslo“
heslo = řidič.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
pole / div [2] / vstup ')
# zadání hesla pro twitter
Heslo.send_keys ('Zadejte heslo')
# vyhledejte tlačítko „přihlásit se“ a klikněte na něj
Řidič.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.klikněte ()

Výše uvedený kód automatizuje prohlížeč pro přihlášení na webové stránky sociálních médií. Nejprve jsme vytvořili objekt našeho oblíbeného prohlížeče. V tomto případě jsme jako prohlížeč zvolili „Chrome“. K vytvoření objektu jsme předali cestu našeho „chromedriveru“ jako argument. Poté jsme zadali adresu URL facebooku a přihlásili jsme se na Facebook výběrem prvků a předáním uživatelského jména a hesla.

Poté jsme otevřeli novou kartu a zadali adresu URL twitteru. Poté jsme přešli na novou kartu, protože ovládání kódu bylo stále na první kartě, i když druhá karta byla otevřená. Poté jsme se přihlásili na twitter výběrem prvků a předáním uživatelského jména a hesla.

Automatizace online nakupování

Dalším dobrým příkladem automatizace prohlížeče může být online nakupování. Například chcete koupit fotoaparát online, ale ceny jsou příliš vysoké. Každý den kontrolujete, zda je cena ve vašem rozmezí nebo ne. Tuto úlohu lze automatizovat pomocí SELEN a můžete se vyhnout kontrole ceny každý den. Následující kód vás poštou informuje, zda je cena požadovaného produktu dostupná nebo ne. Pokud je požadovaný produkt v prodeji, program vás na to upozorní e-mailem.

# importuje webdriver z modulu selenu
z webového ovladače pro import selenu
 
# import smtplib modulu pro odesílání pošty
importovat smtplib
 
# definování funkce pošty k informování prostřednictvím e-mailu
def mail ():
 
# navázání připojení k serveru Gmail s názvem domény a číslem portu. 
To se u každého poskytovatele e-mailu liší
připojení = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# pozdravím server
spojení.ehlo ()
 
# zahájení šifrovaného připojení TLS
spojení.starttls ()
 
# Přihlaste se na server Gmailu pomocí své hlavní adresy a hesla
spojení.přihlášení ('adresa odesílatele', 'heslo')
 
# zasílání e-mailů vás informujících o ceně kamery
spojení.sendmail ('poštovní adresa odesílatele', 'poštovní adresa příjemce'),
„Předmět: Můžete si koupit kameru“)
 
# končící připojení
spojení.přestat()
Zde končí # funkce pošty
 
# spuštění google chrome poskytnutím cesty chromedriver jako argumentu
driver = webdriver.Chrome („cesta k chromedriveru“)
 
# minimalizace chromovaného okna
Řidič.minimalizovat_okno ()
 
# otevření Draz.stránka pk
Řidič.dostat('https: // www.daraz.pk /')
 
# vyhledávací prvek vyhledávací lišty pomocí atributu id k vyhledání kamery
searchBar = řidič.find_element_by_id ('q')
 
# psaní kamery do vyhledávací lišty
hledat bar.send_keys ('camera')
 
# umístění prvku vyhledávacího tlačítka pomocí xpath prvku
hledat = řidič.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / tlačítko ')
 
#kliknutí na tlačítko Hledat
Vyhledávání.klikněte ()
 
# vyhledání prvku požadovaného produktu pomocí atributu xpath
product = 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 ')
 
# kliknutím na požadovaný produkt
produkt.klikněte ()
 
# vyhledání prvku ceny pomocí atributu xpath
cena = řidič.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# extrahování textu z cenového prvku. To dává cenu produktu jako „Rs. 24 500 '
cena = cena.text
 
# převod ceny na řetězec
Cena = str (cena)
 
# definování prázdného pole. Toto bude použito při extrahování číslic z ceny jako „24500“
formulář „Rs. 24 500 '
num = []
 
# čtení všech položek cenového řetězce jeden po druhém pomocí smyčky for
pro x v ceně:
 
# kontrola, zda je položka číslice nebo ne, protože chceme pouze číslice v ceně
pokud x.isdigit ():
 
# přidání pouze číslic do seznamu čísel
počet.připojit (x)
 
# připojení ke všem položkám seznamu čísel. Cena je nyní řetězec obsahující pouze číslice
cena = ".připojit se (počet)
 
# převod řetězce ceny na celé číslo
cena = int (cena)
 
# kontrola, zda je cena dostupná nebo ne
pokud cena <= 25000:
 
# volání poštovní funkce, abychom vás informovali o ceně
pošta()
 
# zavírání prohlížeče
Řidič.přestat()

Výše uvedený kód otevírá daraz.Stránka pk a vyhledá kameru a informuje vás e-mailem, pokud je cena dostupná. Nejprve jsme importovali SELEN a SMTPLIB moduly. Poté jsme definovali funkci „mail“, která vám pošle poštu s informací, že cena je při volání přijatelná.

Poté jsme otevřeli chromový prohlížeč pomocí chromedriveru a hledali 'daraz.pk '. Poté pomocí prvků a jejich atributů vyhledáme požadovaný produkt. Jak se prvky nacházejí a nacházejí, bylo popsáno výše. Cena, kterou jsme dostali, byl řetězec, takže jsme tento řetězec převedli na celé číslo a poté zkontrolovali, zda je cena dostupná nebo ne. Pokud je cena dostupná, zavolejte funkci „mail“.

Vytváření úlohy Cron

Výše dva automatizační skripty jsou vyžadovány pro spuštění jednou denně v určitou dobu. Můžeme to spravovat pomocí úlohy cron. Úkoly, které jsou přidány do crontabu, lze spouštět v určitou dobu opakovaně. Chcete-li přidat výše uvedené úkoly v crontabu, nejprve spusťte následující příkaz v Linux Terminal.

[chráněno e-mailem]: ~ $ crontab -e

Příkaz výše otevře soubor crontab, který chcete upravit. Na konci souboru zadejte následující příkaz.

0 8 * * * python / path / to / python / script

Vidíme položky před příkazem zprava doleva.

Tento příkaz tedy bude spuštěn každý den v 8 hodin.

Závěr

V tomto článku jsme diskutovali o tom, jak můžete použít SELEN spolu s Pythonem k automatizaci prohlížeče pomocí různých technik. Můžete si zautomatizovat každodenní rutinní práci, vyplňovat formuláře, stahovat si věci a spoustu věcí. Zde jsme diskutovali pouze o dvou příkladech, ale můžete automatizovat každou věc, kterou může člověk udělat ručně pomocí prohlížeče.

Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...