Selén

Používanie selénu bez hlavy s prehliadačom Chrome

Používanie selénu bez hlavy s prehliadačom Chrome
Ak chcete vykonať automatizáciu webu alebo sešrotovanie webu pomocou webového prehliadača Chrome, predvolene sa spustí grafická verzia webového prehliadača Chrome. Nie je problém, keď svoj selénový skript spúšťate z grafického desktopového prostredia Linuxu (t. J.e., GNOME 3, KDE, XFCE4). Ale ak chcete spustiť svoj selénový skript v bezhlavom prostredí (t.j.e., Ubuntu Server, CentOS / RHEL Server), kde nemáte nainštalované žiadne grafické desktopové prostredie, potom to nebude fungovať.

Našťastie môžete selén nakonfigurovať tak, aby spúšťal webový prehliadač Chrome v bezhlavom režime. V tomto režime bude webový prehliadač Chrome fungovať bez grafického používateľského rozhrania. Selén teda môže robiť webovú automatizáciu, zošrotovanie webu, testy prehliadačov atď. pomocou webového prehliadača Chrome na serveroch Linux, kde nemáte nainštalované žiadne grafické desktopové prostredie.

V tomto článku vám ukážem, ako spustiť selén s webovým prehliadačom Chrome v bezhlavom režime. Použijem knižnicu Selenium Python a napíšem skripty Selenium pomocou programovacieho jazyka Python 3. Takže poďme na to.

Predpoklady:

Ak chcete vyskúšať príkazy a príklady z tohto článku, musíte ich mať,

1) Vo vašom počítači je nainštalovaná distribúcia Linuxu (najlepšie Ubuntu).
2) Vo vašom počítači je nainštalovaný Python 3.
3) Vo vašom počítači je nainštalovaný program PIP 3.
4) Vo vašom počítači je nainštalovaný prehliadač Google Chrome.

Na stránkach LinuxHint nájdete veľa článkov o týchto témach.com. Ak potrebujete pomoc, nezabudnite ich skontrolovať.

Príprava virtuálneho prostredia Pythonu 3 na projekt:

Virtuálne prostredie Python sa používa na vytvorenie izolovaného adresára projektu Python. Moduly Pythonu, ktoré inštalujete pomocou PIP, sa nainštalujú iba do adresára projektu, nie globálne.

Python virtualenv modul slúži na správu virtuálnych prostredí Pythonu.

Môžete si nainštalovať Python virtualenv modul globálne pomocou PIP 3 nasledovne:

$ sudo pip3 nainštalovať virtualenv

Python virtualenv by mali byť nainštalované.

Vytvorte adresár projektu bezhlavý chróm / vo vašom aktuálnom pracovnom adresári takto:

$ mkdir -pv chrome-headless / ovládače

Prejdite do novo vytvoreného adresára projektu bezhlavý chróm / nasledovne:

$ cd chrome-headless /

Vytvorte virtuálne prostredie Pythonu v adresári projektu pomocou nasledujúceho príkazu:

$ virtualenv .venv

Virtuálne prostredie Pythonu by malo byť vytvorené v .venv / adresár vo vašom adresári projektu.

Aktivujte virtuálne prostredie Pythonu v adresári projektu pomocou nasledujúceho príkazu:

$ zdroj .venv / bin / aktivovať

Inštalácia selénovej knižnice Python:

Knižnica selénu je k dispozícii v oficiálnom úložisku Python PyPI.

Knižnicu Selenium Python môžete nainštalovať pomocou PIP 3 nasledovne:

$ pip3 nainštalujte selén

Knižnica Selenium Python by mala byť nainštalovaná.

Inštalácia webového ovládača Chrome:

Ovládač Chrome Web Driver vám umožní ovládať alebo automatizovať webový prehliadač Google Chrome od spoločnosti Selenium.

V tejto časti vám ukážem, ako nainštalovať webový ovládač Chrome.

Najskôr otvorte prehliadač Google Chrome a navštívte chrome: // settings / help.

Po načítaní stránky by ste mali nájsť číslo verzie prehliadača Google Chrome v Informácie o prehliadači Chrome oddiel. Všimnite si prvé 3 časti čísla verzie, ktoré sú označené na snímke obrazovky nižšie.

Ak chcete stiahnuť webový ovládač Chrome, navštívte oficiálnu stránku na stiahnutie ovládača Chrome.

V Aktuálne verzie by mal byť k dispozícii webový ovládač Chrome pre najaktuálnejšie vydania webového prehliadača Google Chrome, ako vidíte na snímke obrazovky nižšie. Jedno z aktuálnych vydaní webového ovládača Chrome by malo mať zodpovedajúce číslo verzie s webovým prehliadačom Google Chrome. Prvé 3 sekcie čísla verzie webového ovládača Chrome a webového prehliadača Google Chrome sa musia zhodovať.

Ak hľadaná verzia nie je v priečinku Aktuálne verzie sekcia, posuňte sa trochu nadol a mali by ste ju nájsť.

Po kliknutí na číslo verzie webového ovládača Chrome by sa mala stránka prevziať. Klikni na chromedriver_linux64.PSČ súbor odtiaľto.

Mal by sa stiahnuť archív webového ovládača Chrome.

Stiahnuté chromedriver_linux64.PSČ súbor by mal byť vo vašom ~ / Súbory na stiahnutie adresár.

$ ls -lh ~ / Súbory na stiahnutie

Extrahujte chromedriver_linux64.PSČ archív z ~ / Súbory na stiahnutie adresár do vodiči / adresára projektu nasledovne:

$ unzip ~ / Downloads / chromedriver_linux64.ovládače zip -d /

Nový súbor chromedriver by mala byť vytvorená v vodiči / adresár vášho projektu po rozbalení archívu webového ovládača Chrome, ako je vidieť na snímke obrazovky nižšie.

Testovanie webového ovládača Chrome v bezhlavom režime:

V tejto časti vám ukážem, ako spustiť selén pomocou ovládača Chrome v bezhlavom režime.

Najskôr vytvorte nový skript v jazyku Python ex01.py do adresára projektu a zadajte do neho nasledujúce riadky kódov.

z webového ovládača na selén na import
zo selénu.webdriver.bežné.kľúče na import kľúčov
zo selénu.webdriver.chróm.možnosti importu
chromeOptions = Možnosti ()
chromeOptions.bezhlavý = Pravda
prehliadač = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
prehliadač.get ("http: // linuxhint.com ")
print ("Názov:% s"% prehliadač.názov)
prehliadač.skončiť ()

Po dokončení uložte súbor ex01.py Skript v jazyku Python.

Tieto riadky importujú všetky požadované položky z priečinka selén knižnica.

Ako som už uviedol skôr, predvolene sa ovládač Chrome pokúša spustiť prehliadač Google Chrome v grafickom režime. Ak chcete spustiť prehliadač Google Chrome v bezhlavom režime, musíme ovládaču Chrome povedať, aby odovzdal niektoré ďalšie možnosti. Tento riadok vytvára znak možnosti objekt, ktorý môžeme neskôr preniesť do webového ovládača Chrome.

Prehliadač Google Chrome môžete spustiť v bezhlavom režime jednoduchým nastavením možnosti bezhlavý majetok chromeOptions namietať proti Pravdaže.

Alebo môžete použiť add_argument () metóda chromeOptions objekt na pridanie -bezhlavý argument príkazového riadku na spustenie prehliadača Google Chrome v bezhlavom režime pomocou webového ovládača Selenium Chrome.

Môžete použiť a webdriver.Chrome () metóda na inicializáciu / spustenie webového prehliadača Google Chrome od spoločnosti Selenium. The spustiteľná_cesta Argument sa používa na to, aby selénu povedalo, aby použil znak chromedriver binárne z vodiči / adresár projektu. The možnosti argument hovorí Selenium, aby využilo naše vlastné možnosti chromeOptions.

Akonáhle Selenium spustí webový prehliadač Google Chrome pomocou webového ovládača Selenium Chrome, vráti a prehliadač objekt. Pomocou nej môžeme neskôr ovládať inštanciu prehliadača Google Chrome.

The prehliadač.dostať () metóda načíta linuxhint.com web vo webovom prehliadači Google Chrome na pozadí (v bezhlavom režime).

Po načítaní stránky, prehliadač.titul vlastníctvo bude mať názov webovej stránky. Python print () metóda vytlačí názov webovej stránky na konzole.

Potom prehliadač.skončiť () metóda zavrie webový prehliadač Google Chrome.

Ak chcete vyskúšať, či selén dokáže pracovať v bezhlavom režime, spustite skript Python ex01.py nasledovne:

$ python3 ex01.py

Mal by vytlačiť názov webovej stránky na konzole bez otvorenia webového prehliadača Google Chrome v grafickom režime.

Len aby som vám ukázal, že funguje z bezhlavých serverov Linux (kde nie je nainštalované žiadne grafické používateľské rozhranie), spustil som skript Pythonu ex01.py na serveri Ubuntu 20.04 LTS. Ako vidíte, skript funguje dobre.

Škrabanie webu so selénom v bezhlavom režime pomocou webového ovládača Chrome:

V tejto časti vám ukážem príklad zošrotovania webu v seléne pomocou webového ovládača Chrome v bezhlavom režime.

Najskôr navštívte generátor náhodných mien.informácie z prehliadača Google Chrome alebo iného webového prehliadača. Táto webová stránka vygeneruje pri každom opätovnom načítaní stránky 10 náhodných mien, ako vidíte na snímke obrazovky nižšie. Naším cieľom je extrahovať tieto náhodné mená pomocou selénu v bezhlavom režime.

Ak chcete zistiť štruktúru HTML zoznamu, musíte otvoriť Chrome Developer Tool. Vykonáte to tak, že na stránke kliknete pravým tlačidlom myši (RMB) a kliknete na Skontrolujte alebo stlačte + + Ja.

Chrome Developer Tool by mali byť otvorené. Klikni na Skontrolujte ikonu () ako je vyznačené na snímke obrazovky nižšie.

Potom umiestnite kurzor myši na zoznam Náhodné mená. Zoznam by mal byť zvýraznený tak, ako je to vyznačené na snímke obrazovky nižšie. Potom stlačte ľavé tlačidlo myši (LMB) a vyberte zoznam.

HTML kód zoznamu by mal byť zvýraznený v Prvky záložka Chrome Developer Tool. Tu je zoznam náhodných mien vnútri a div element. The div prvok má trieda názov výsledky. V jeho vnútri máme ol prvok s trieda názov zoznam mien. Vnútri ol prvku, každé z mien je v a li element.

Z toho môžeme povedať, že sa dostaneme k li tagy, musíme sa riadiť div.výsledky> ol.nameList> li

Náš selektor CSS teda bude div.výsledky ol.nameList li (stačí vymeniť > značky s medzerami)

Na extrahovanie týchto náhodných mien vytvorte nový skript v jazyku Python ex02.py a zadajte do neho nasledujúce riadky kódov.

z webového ovládača na selén na import
zo selénu.webdriver.bežné.kľúče na import kľúčov
zo selénu.webdriver.chróm.možnosti importu
chromeOptions = Možnosti ()
chromeOptions.bezhlavý = Pravda
prehliadač = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
prehliadač.get ("http: // generátor náhodných mien.Info/")
nameList = prehliadač.find_elements_by_css_selector ('div.výsledky ol.nameList li ')
pre meno v nameList:
tlač (meno.text)
prehliadač.skončiť ()

Po dokončení uložte súbor ex02.py Skript v jazyku Python.

Riadky 1 - 8 som vysvetlil v predchádzajúcej časti tohto článku. Sú rovnaké ako v ex01.py.

Riadok 10 načíta webovú stránku generátora náhodných mien pomocou znaku prehliadač.dostať () metóda.

Riadok 11 vyberie zoznam mien pomocou prehliadač.find_elements_by_css_selector () metóda. Táto metóda využíva selektor CSS div.výsledky ol.nameList li vyhľadať zoznam mien. Potom sa zoznam mien uloží do priečinka zoznam mien premenná.

V riadkoch 13 a 14 sa a pre slučka sa používa na iteráciu cez zoznam mien zoznam li prvkov. V každej iterácii obsah li prvok je vytlačený na konzole.

Teraz spustite skript v jazyku Python ex02.py nasledovne:

$ python3 ex02.py

Ako vidíte, skript v jazyku Python ex02.py načítal všetky náhodné mená z webovej stránky.

Ak skript spustíte druhýkrát, mal by vrátiť nový zoznam náhodných mien, ako vidíte na snímke obrazovky nižšie.

Problémy, ktorým môžete čeliť pri chode selénu v bezhlavom režime:

Už ste videli, že spustenie selénu v bezhlavom režime pomocou ovládača Chrome je také ľahké ako nastavenie chromeOptions.bezhlavý označiť Pravdaže.

Toto riešenie nemusí fungovať pre niektoré distribúcie systému Linux. V tejto časti budem hovoriť o niektorých problémoch, s ktorými sa môžete stretnúť pri používaní selénu v bezhlavom režime pomocou webového ovládača Chrome.

V predvolenom nastavení robí webový prehliadač Google Chrome veľa karantény (spúšťa veľa vecí v izolovanom prostredí). To môže spôsobiť problémy pri behu selénu v bezhlavom režime pomocou webového ovládača Chrome. Sandboxing pre Google Chrome môžete zakázať pomocou -ne-pieskovisko vlajka.

Ak chcete pridať -ne-pieskovisko príznak, pred inicializáciou ovládača Selenium Chrome pomocou webdriver.Chrome () metóda (riadok 8 v ex01.py Skript v jazyku Python).

chromeOptions.add_argument ("- no-sandbox")

Vo webovom prehliadači Google Chrome od spoločnosti Selenium môžete mať problémy s vykonaním určitých vecí, napríklad pri vytváraní snímok obrazovky z webu a podobne. Môže sa to stať, pretože v bezhlavom režime môže prehliadač Google Chrome nastaviť nesprávne rozlíšenie virtuálnej obrazovky. Váš web teda nemusí vyzerať dobre. Požadované rozlíšenie virtuálnej obrazovky pre webový prehliadač Google Chrome môžete nastaviť v bezhlavom režime pomocou klávesu -veľkosť okna možnosť príkazového riadku.

Napríklad na nastavenie šírky virtuálnej obrazovky na 1280 px a výška do 720 px, pridať -veľkosť okna možnosť príkazového riadku pred inicializáciou ovládača Selenium Chrome pomocou webdriver.Chrome () metóda (riadok 8 v ex01.py Skript v jazyku Python):

chromeOptions.add_argument ("- veľkosť okna = 1280 720")

Na vašom serveri nemusí byť nainštalovaný grafický procesor alebo môže obsahovať grafický procesor, ktorý webový prehliadač Google Chrome nebude vedieť, ako používať. Ak nie je GPU k dispozícii alebo ak je k dispozícii nepodporovaný GPU, mal by Google Chrome predvolene automaticky deaktivovať akceleráciu GPU. V niektorých prípadoch to môže zlyhať. V takom prípade nemusí byť selén schopný spustiť webový prehliadač Google Chrome v bezhlavom režime. Ak chcete vyriešiť tento problém, musíte deaktivovať akceleráciu GPU pomocou -disable-gpu vlajka.

Ak chcete pridať -disable-gpu príznak, pred inicializáciou ovládača Selenium Chrome pomocou webdriver.Chrome () metóda (riadok 8 v ex01.py Skript v jazyku Python).

chromeOptions.add_argument (“- disable-gpu”)

Záver:

V tomto článku som vám ukázal, ako nastaviť selén v bezhlavom režime pomocou webového ovládača Chrome. Prebral som základné informácie, ktoré vám pomôžu začať s bezhlavou automatizáciou selénu, testovaním webu a škrabaním webu.

Pokryl som tiež niektoré argumenty / príznaky príkazového riadku prehliadača Google Chrome, ktoré môžete použiť na vyriešenie niektorých problémov, ktoré môžete mať pri behu selénu v bezhlavom režime pomocou webového ovládača Chrome.

K dispozícii je oveľa viac možností príkazového riadka prehliadača Google Chrome, ktorým som sa v tomto článku nezaoberal. Tieto možnosti príkazového riadku môžu byť pre váš projekt užitočné. Všetky podporované možnosti príkazového riadka prehliadača Google Chrome nájdete na stránke Zoznam prepínačov príkazového riadku Chromium od Petera Beverloo.

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...