Selen

Spuštění Selenium Headless s Chrome

Spuštění Selenium Headless s Chrome
Chcete-li provést automatizaci webu nebo sešrotování webu pomocí webového prohlížeče Chrome, spustí se ve výchozím nastavení grafická verze webového prohlížeče Chrome. Není problém, když spouštíte svůj selenový skript z grafického prostředí Linuxu (tj.E., GNOME 3, KDE, XFCE4). Ale pokud chcete spustit svůj selenový skript v bezhlavém prostředí (tj.E., Ubuntu Server, CentOS / RHEL Server), kde nemáte nainstalované žádné grafické desktopové prostředí, pak to nebude fungovat.

Naštěstí můžete selen nakonfigurovat tak, aby spouštěl webový prohlížeč Chrome v bezhlavém režimu. V tomto režimu bude webový prohlížeč Chrome fungovat bez grafického uživatelského rozhraní. Selen tedy může provádět webovou automatizaci, sešrotování webu, testy prohlížečů atd. pomocí webového prohlížeče Chrome na serverech Linux, kde nemáte nainstalované žádné grafické desktopové prostředí.

V tomto článku vám ukážu, jak spustit selen pomocí webového prohlížeče Chrome v bezhlavém režimu. Použiji knihovnu Selenium Python a napíšu selenové skripty pomocí programovacího jazyka Python 3. Pojďme tedy začít.

Předpoklady:

Chcete-li vyzkoušet příkazy a příklady z tohoto článku, musíte mít,

1) Ve vašem počítači je nainstalována distribuce Linuxu (nejlépe Ubuntu).
2) Python 3 nainstalovaný ve vašem počítači.
3) PIP 3 nainstalovaný ve vašem počítači.
4) Google Chrome nainstalovaný ve vašem počítači.

Mnoho článků o těchto tématech najdete na LinuxHint.com. Nezapomeňte je zkontrolovat, pokud potřebujete pomoc.

Příprava virtuálního prostředí Pythonu 3 na projekt:

Virtuální prostředí Pythonu se používá k vytvoření izolovaného adresáře projektu Pythonu. Moduly Pythonu, které instalujete pomocí PIP, se nainstalují pouze do adresáře projektu, nikoli globálně.

Krajta virtuální modul slouží ke správě virtuálních prostředí Pythonu.

Můžete si nainstalovat Python virtuální modul globálně pomocí PIP 3 následujícím způsobem:

$ sudo pip3 install virtualenv

Krajta virtuální by měl být nainstalován.

Vytvořte adresář projektu bezhlavý chrom / ve vašem aktuálním pracovním adresáři takto:

$ mkdir -pv chrom-bezhlavý / ovladače

Přejděte do nově vytvořeného adresáře projektu bezhlavý chrom / jak následuje:

$ cd chrome-headless /

Vytvořte virtuální prostředí Pythonu v adresáři projektu pomocí následujícího příkazu:

$ virtualenv .venv

Virtuální prostředí Pythonu by mělo být vytvořeno v .venv / ve vašem adresáři projektu.

Aktivujte virtuální prostředí Pythonu adresáře projektu pomocí následujícího příkazu:

$ zdroj .venv / bin / aktivovat

Instalace knihovny Selen Python Library:

Knihovna selenu je k dispozici v oficiálním úložišti Python PyPI.

Knihovnu Selenium Python můžete nainstalovat pomocí PIP 3 následovně:

$ pip3 nainstalujte selen

Měla by být nainstalována knihovna Selenium Python.

Instalace webového ovladače Chrome:

Chrome Web Driver vám umožní ovládat nebo automatizovat webový prohlížeč Google Chrome od Selenium.

V této části vám ukážu, jak nainstalovat webový ovladač Chrome.

Nejprve otevřete Google Chrome a přejděte na chrome: // settings / help.

Po načtení stránky byste měli najít číslo verze Google Chrome v O prohlížeči Chrome sekce. Všimněte si prvních 3 částí čísla verze, jak jsou vyznačeny na následujícím obrázku.

Chcete-li stáhnout webový ovladač Chrome, navštivte oficiální stránku pro stažení ovladače Chrome.

V Aktuální zprávy část, Webový ovladač Chrome pro nejnovější verze webového prohlížeče Google Chrome by měl být k dispozici, jak vidíte na následujícím obrázku. Jedno z aktuálních vydání ovladače Chrome Web Driver by mělo mít shodné číslo verze s vaším webovým prohlížečem Google Chrome. První 3 oddíly čísla verze webového ovladače Chrome a webového prohlížeče Google Chrome se musí shodovat.

Pokud hledaná verze není v Aktuální verze sekce, posuňte se trochu dolů a měli byste ji najít.

Jakmile kliknete na číslo verze webového ovladače Chrome, měl by přejít na jeho stránku ke stažení. Klikněte na chromedriver_linux64.zip soubor odtud.

Archiv Chrome Web Driver by měl být stažen.

Staženo chromedriver_linux64.zip soubor by měl být ve vašem ~ / Ke stažení adresář.

$ ls -lh ~ / Ke stažení

Extrahujte chromedriver_linux64.zip archiv z ~ / Ke stažení adresář do Řidiči/ adresář projektu takto:

$ unzip ~ / Soubory ke stažení / chromedriver_linux64.ovladače zip -d /

Nový soubor chromedriver by měl být vytvořen v Řidiči/ adresář vašeho projektu po rozbalení archivu webového ovladače Chrome, jak vidíte na obrázku níže.

Testování webového ovladače Chrome v bezhlavém režimu:

V této části vám ukážu, jak spustit selen pomocí ovladače Chrome v bezhlavém režimu.

Nejprve vytvořte nový skript v Pythonu ex01.py do adresáře projektu a zadejte do něj následující řádky kódů.

z webového ovladače pro import selenu
ze selenu.webdriver.běžný.klíče importovat klíče
ze selenu.webdriver.chrom.možnosti importu
chromeOptions = Možnosti ()
chromeOptions.bezhlavý = pravda
prohlížeč = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
prohlížeč.get ("http: // linuxhint.com ")
print ("Název:% s"% prohlížeč.titul)
prohlížeč.přestat()

Až budete hotovi, uložte ex01.py Skript v Pythonu.

Tyto řádky importují všechny požadované položky z selen knihovna.

Jak jsem již řekl dříve, ve výchozím nastavení se ovladač Chrome pokusí spustit Google Chrome v grafickém režimu. Chcete-li spustit Google Chrome v bezhlavém režimu, musíme ovladači Chrome říct, aby předal některé další možnosti. Tento řádek vytváří Možnosti objekt, který můžeme později předat webovému ovladači Chrome.

Google Chrome můžete spustit v bezhlavém režimu jednoduše nastavením bezhlavý majetek chromeOptions vznést námitku Skutečný.

Nebo můžete použít add_argument () metoda chromeOptions objekt pro přidání -bezhlavý argument příkazového řádku pro spuštění Google Chrome v bezhlavém režimu pomocí webového ovladače Selenium Chrome.

Můžete použít a webdriver.Chrome () způsob inicializace / spuštění webového prohlížeče Google Chrome od Selenium. The spustitelná_cesta Argument se používá k tomu, aby selenu řekl, aby použil chromedriver binární z Řidiči/ adresář projektu. The možnosti Argument říká Selenu, aby využilo naše vlastní možnosti chromeOptions.

Jakmile Selenium spustí webový prohlížeč Google Chrome pomocí webového ovladače Selenium Chrome, vrátí a prohlížeč objekt. Můžeme jej použít k ovládání instance Google Chrome později.

The prohlížeč.dostat() metoda načte linuxhint.com web ve webovém prohlížeči Google Chrome na pozadí (v bezhlavém režimu).

Jakmile se stránka načte, prohlížeč.titul vlastnost bude mít název webové stránky. Python tisk() metoda vytiskne název webu na konzoli.

Poté prohlížeč.přestat() metoda zavře webový prohlížeč Google Chrome.

Chcete-li otestovat, zda selen může fungovat v bezhlavém režimu, spusťte skript Pythonu ex01.py jak následuje:

$ python3 ex01.py

Mělo by na konzole vytisknout název webu, aniž by se webový prohlížeč Google Chrome otevřel v grafickém režimu.

Jen abych vám ukázal, že to funguje na bezhlavých serverech Linuxu (kde není nainstalováno žádné grafické uživatelské rozhraní), spustil jsem skript Pythonu ex01.py na serveru Ubuntu Server 20.04 LTS. Jak vidíte, skript funguje dobře.

Škrábání webu se selenem v bezhlavém režimu pomocí webového ovladače Chrome:

V této části vám ukážu příklad sešrotování webu v selenu pomocí webového ovladače Chrome v bezhlavém režimu.

Nejprve navštivte generátor náhodných jmen.informace z Google Chrome nebo jiného webového prohlížeče. Tento web vygeneruje 10 náhodných jmen při každém opětovném načtení stránky, jak vidíte na následujícím obrázku. Naším cílem je extrahovat tato náhodná jména pomocí selenu v bezhlavém režimu.

Chcete-li zjistit strukturu HTML seznamu, musíte otevřít Chrome Developer Tool. Chcete-li to provést, stiskněte pravé tlačítko myši (RMB) na stránce a klikněte na Kontrolovat nebo stiskněte + + .

Chrome Developer Tool by měl být otevřen. Klikněte na Zkontrolovat ikonu () jak je uvedeno na snímku obrazovky níže.

Poté umístěte kurzor na seznam Náhodná jména. Seznam by měl být zvýrazněn tak, jak je označen na snímku obrazovky níže. Poté stisknutím levého tlačítka myši (LMB) vyberte seznam.

HTML kód seznamu by měl být zvýrazněn v Elementy záložka Chrome Developer Tool. Zde je seznam náhodných jmen uvnitř a div živel. The div prvek má třída název Výsledek. Uvnitř toho máme ol prvek s třída název jmenný seznam. Uvnitř ol prvek, každé ze jmen je v a li živel.

Z toho můžeme říci, že se dostat do li tagy, musíme následovat div.výsledky> ol.nameList> li

Náš selektor CSS tedy bude div.výsledky ol.nameList li (stačí vyměnit > značky s mezerami)

Pro extrakci těchto náhodných jmen vytvořte nový skript v Pythonu ex02.py a zadejte do něj následující řádky kódů.

z webového ovladače pro import selenu
ze selenu.webdriver.běžný.klíče importovat klíče
ze selenu.webdriver.chrom.možnosti importu
chromeOptions = Možnosti ()
chromeOptions.bezhlavý = pravda
prohlížeč = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
prohlížeč.get ("http: // generátor náhodných jmen.informace / ")
nameList = prohlížeč.find_elements_by_css_selector ('div.výsledky ol.nameList li ')
pro jméno v nameList:
tisk (jméno.text)
prohlížeč.přestat()

Až budete hotovi, uložte ex02.py Skript v Pythonu.

Vysvětlil jsem řádky 1-8 v předchozí části tohoto článku. Jsou stejné jako v ex01.py.

Řádek 10 načte web generátoru náhodných jmen pomocí prohlížeč.dostat() metoda.

Řádek 11 vybírá seznam jmen pomocí prohlížeč.find_elements_by_css_selector () metoda. Tato metoda používá selektor CSS div.výsledky ol.nameList li vyhledejte seznam jmen. Poté se seznam jmen uloží do složky jmenný seznam proměnná.

V řádcích 13 a 14, a pro smyčka se používá k iteraci přes jmenný seznam seznam li elementy. V každé iteraci obsah li prvek je vytištěn na konzole.

Nyní spusťte skript Pythonu ex02.py jak následuje:

$ python3 ex02.py

Jak vidíte, skript v Pythonu ex02.py načíst všechna náhodná jména z webové stránky.

Pokud spustíte skript podruhé, měl by vrátit nový seznam náhodných jmen, jak vidíte na obrázku níže.

Problémy, kterým můžete čelit při běhu selenu v bezhlavém režimu:

Již jste viděli, že spuštění selenu v bezhlavém režimu pomocí ovladače Chrome je stejně snadné jako nastavení chromeOptions.bezhlavý označit Skutečný.

Toto řešení nemusí u některých distribucí systému Linux fungovat. V této části budu hovořit o některých problémech, se kterými se můžete setkat při běhu selenu v bezhlavém režimu pomocí webového ovladače Chrome.

Ve výchozím nastavení webový prohlížeč Google Chrome provádí mnoho sandboxů (spouští mnoho věcí v izolovaném prostředí). To může způsobit problémy se spuštěním selenu v bezhlavém režimu pomocí webového ovladače Chrome. Sandboxing pro Google Chrome můžete deaktivovat pomocí -ne-pískoviště vlajka.

Chcete-li přidat -ne-pískoviště příznak, přidejte následující řádek před inicializací ovladače Selenium Chrome pomocí webdriver.Chrome () metoda (řádek 8 v ex01.py Skript v Pythonu).

chromeOptions.add_argument ("- no-sandbox")

Ve webovém prohlížeči Google Chrome od společnosti Selenium můžete mít problémy s prováděním určitých věcí, jako je pořizování snímků obrazovky webu atd. K tomu může dojít, protože v bezhlavém režimu může Google Chrome nastavit nesprávné rozlišení virtuální obrazovky. Váš web tedy nemusí vypadat dobře. Požadované rozlišení virtuální obrazovky pro webový prohlížeč Google Chrome můžete nastavit v bezhlavém režimu pomocí -velikost okna možnost příkazového řádku.

Například nastavit šířku virtuální obrazovky na 1280 px a výška do 720 px, přidat -velikost okna možnost příkazového řádku před inicializací ovladače Selenium Chrome pomocí webdriver.Chrome () metoda (řádek 8 v ex01.py Skript v Pythonu) takto:

chromeOptions.add_argument ("- velikost okna = 1280 720")

Na vašem serveru nemusí být nainstalován grafický procesor nebo může mít grafický procesor, který webový prohlížeč Google Chrome neví, jak jej používat. Ve výchozím nastavení by Google Chrome měl automaticky deaktivovat akceleraci GPU, pokud GPU není k dispozici nebo pokud je k dispozici nepodporovaný GPU. V některých případech to může selhat. V takovém případě selen nemusí být schopen spustit webový prohlížeč Google Chrome v bezhlavém režimu. Chcete-li tento problém vyřešit, musíte deaktivovat akceleraci GPU pomocí -disable-gpu vlajka.

Chcete-li přidat -disable-gpu příznak, přidejte následující řádek před inicializací ovladače Selenium Chrome pomocí webdriver.Chrome () metoda (řádek 8 v ex01.py Skript v Pythonu).

chromeOptions.add_argument (“- disable-gpu”)

Závěr:

V tomto článku jsem vám ukázal, jak nastavit Selen v bezhlavém režimu pomocí webového ovladače Chrome. Pokryl jsem základy, které vám pomohou začít s bezhlavou automatizací selenového prohlížeče, webovým testováním a škrábáním webu.

Pokryl jsem také některé argumenty / příznaky příkazového řádku Google Chrome, které můžete použít k vyřešení některých problémů, které můžete mít při běhu selenu v bezhlavém režimu pomocí webového ovladače Chrome.

K dispozici je mnoho dalších možností příkazového řádku prohlížeče Google Chrome, kterým jsem se v tomto článku nezabýval. Tyto možnosti příkazového řádku mohou být pro váš projekt užitečné. Všechny podporované možnosti příkazového řádku prohlížeče Google Chrome najdete na stránce Seznam přepínačů příkazového řádku Chromium od Petera Beverloo.

Hry Nejlepší hry Oculus App Lab
Nejlepší hry Oculus App Lab
Pokud jste vlastníkem náhlavní soupravy Oculus, musíte mít informace o bočním nakládání. Sideloading je proces instalace neukládaného obsahu do náhlav...
Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...
Hry 5 nejlepších arkádových her pro Linux
5 nejlepších arkádových her pro Linux
V dnešní době jsou počítače vážné stroje používané k hraní her. Pokud nemůžete získat nové vysoké skóre, budete vědět, co tím myslím. V tomto příspěvk...