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 selenNEBO
pip3 nainstalujte selenTí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> pythonPython 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.
- Nejprve stiskněte F12 V pravé části okna se otevře zdrojová stránka, jak je zobrazeno níže
- Nyní stiskněte 'Ctrl + Shift + C'nebo klikněte na symbol v levém horním rohu zdrojové stránky.
- Posuňte šipku na 'Email nebo telefon'a klikněte. Tento prvek bude vybraný a zdrojový kód tohoto prvku bude zvýrazněn na zdrojové stránce, jak je zobrazeno níže. Je vidět, že pro vybraný prvek máme následující atributy
- name = „email“
- class = “inputtext login_form_input_box”
- id = “email”
Můžeme najít 'Email nebo telefon'prvek pomocí některého z výše uvedených atributů.
- Pokud nemáme žádný z výše uvedených atributů, můžeme také vybrat prvek pomocí 'XPath''. Chcete-li kopírovat XPath, klikněte pravým tlačítkem na zvýrazněný zdrojový kód na zdrojové stránce. Pak přejděte na 'Kopírovat> Kopírovat XPath''.
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.
- find_element_by_class_name (jméno)
- find_element_by_tag_name (jméno)
- find_element_by_link_text (text)
- find_element_by_css_selector (selektor)
- find_element_by_name (name)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
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íčeNapří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 selenuze 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 selenuz 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 selenuz 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 -ePří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 / scriptVidíme položky před příkazem zprava doleva.
- První hvězdička zprava znamená, že tento příkaz bude spuštěn každý týden.
- Druhá hvězdička znamená, že tento příkaz bude spuštěn každý měsíc
- Třetí hvězdička ukazuje, že tento příkaz bude spuštěn každý den v měsíci
- Čtvrtý záznam je „8“, což znamená, že tento skript bude spuštěn v 8. hodinu dne
- Pátý záznam, který má hodnotu „0“, znamená, že tento příkaz bude spuštěn v 0. minutě.
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.