Reklama

Prehľadávanie webu je mimoriadne užitočné na automatizáciu určitých úloh, ktoré sa bežne vykonávajú na webových stránkach. Môžete napísať prehľadávač na interakciu s webovou stránkou rovnako ako človek.

In starší článok Ako vytvoriť základný webový prehľadávač na získavanie informácií z webovej stránkyChceli ste niekedy zachytiť informácie z webovej stránky? Tu je návod, ako napísať prehľadávač na navigáciu na webovej lokalite a extrahovanie toho, čo potrebujete. Čítaj viac , prebrali sme základy písania a webcrawler Čo je sťahovanie webu? Ako zbierať údaje z webových stránokStalo sa vám, že strácate drahocenný čas čítaním údajov na webových stránkach? Tu je návod, ako nájsť požadované údaje pomocou webového zoškrabovania. Čítaj viac pomocou modulu python, scrapy. Obmedzením tohto prístupu je, že prehľadávač nepodporuje javascript. Nebude správne fungovať s tými webovými stránkami, ktoré intenzívne využívajú javascript na správu používateľského rozhrania. Pre takéto situácie môžete napísať prehľadávač, ktorý používa prehliadač Google Chrome, a teda dokáže spracovať javascript rovnako ako bežný prehliadač Chrome riadený používateľom.

instagram viewer

Automatizácia prehliadača Google Chrome zahŕňa použitie nástroja tzv Selén. Je to softvérový komponent, ktorý sa nachádza medzi vaším programom a prehliadačom a pomáha vám riadiť prehliadač vaším programom. V tomto článku vás prevedieme celým procesom automatizácie prehliadača Google Chrome. Kroky vo všeobecnosti zahŕňajú:

  • Nastavenie Selenium
  • Používanie nástroja Google Chrome Inspector na identifikáciu častí webovej stránky
  • Vytvorenie programu Java na automatizáciu prehliadača Google Chrome

Na účely tohto článku sa pozrime na to, ako čítať Google Mail z jazyka Java. Hoci Google poskytuje API (Application Programming Interface) na čítanie pošty, v tomto článku používame Selenium na interakciu so službou Google Mail na demonštráciu procesu. Google Mail intenzívne využíva javascript, a preto je dobrým kandidátom na učenie sa Selenium.

Nastavenie selénu

Webový ovládač

Ako je vysvetlené vyššie, Selén pozostáva zo softvérového komponentu, ktorý beží ako samostatný proces a vykonáva akcie v mene programu Java. Táto zložka sa nazýva Webový ovládač a musíte si ho stiahnuť do počítača.

Kliknite tu ak chcete prejsť na stránku sťahovania Selenium, kliknite na najnovšiu verziu a stiahnite si príslušný súbor pre operačný systém vášho počítača (Windows, Linux alebo MacOS). Ide o archív ZIP, ktorý obsahuje chromedriver.exe. Extrahujte ho na vhodné miesto ako napr C:\WebDrivers\chromedriver.exe. Toto umiestnenie použijeme neskôr v programe Java.

Moduly Java

Ďalším krokom je nastavenie modulov java potrebných na používanie Selenium. Za predpokladu, že na zostavenie programu java používate Maven, pridajte do svojho programu nasledujúcu závislosť POM.xml.

org.seleniumhq.selénselén-java3.8.1

Keď spustíte proces zostavovania, všetky požadované moduly by sa mali stiahnuť a nastaviť na vašom počítači.

Prvé kroky selénu

Začnime so selénom. Prvým krokom je vytvorenie a ChromeDriver príklad:

Ovládač WebDriver = nový ChromeDriver(); 

Malo by sa tým otvoriť okno prehliadača Google Chrome. Prejdime na stránku vyhľadávania Google.

driver.get(" http://www.google.com"); 

Získajte odkaz na prvok zadávania textu, aby sme mohli vykonať vyhľadávanie. Prvok zadávania textu má názov q. Pomocou metódy lokalizujeme prvky HTML na stránke WebDriver.findElement().

Element WebElement = driver.findElement (By.name("q")); 

Pomocou tejto metódy môžete odoslať text do ľubovoľného prvku sendKeys(). Pošlime hľadaný výraz a ukončíme ho novým riadkom, aby sa vyhľadávanie začalo okamžite.

element.sendKeys("terminátor\n"); 

Teraz, keď prebieha vyhľadávanie, musíme počkať na stránku s výsledkami. Môžeme to urobiť nasledovne:

nový WebDriverWait (ovládač, 10) .until (d -> d.getTitle().toLowerCase().startsWith("terminátor")); 

Tento kód v podstate hovorí Selenium, aby počkal 10 sekúnd a vrátil sa, keď názov stránky začína terminátor. Na zadanie podmienky čakania používame funkciu lambda.

Teraz môžeme získať názov stránky.

System.out.println("Titul: " + driver.getTitle()); 

Po dokončení relácie možno okno prehliadača zavrieť pomocou:

driver.quit(); 

A to, ľudia, je jednoduchá relácia prehliadača ovládaná pomocou Java cez selén. Vyzerá celkom jednoducho, ale umožňuje vám naprogramovať veľa vecí, ktoré by ste normálne museli robiť ručne.

Pomocou nástroja Google Chrome Inspector

Google Chrome Inspector Zistite problémy s webovými stránkami pomocou nástrojov pre vývojárov prehliadača Chrome alebo FirebugAk ste doteraz sledovali moje jQuery tutoriály, možno ste už narazili na nejaké problémy s kódom a neviete, ako ich opraviť. Keď sa stretnete s nefunkčným kúskom kódu, je to veľmi... Čítaj viac je neoceniteľným nástrojom na identifikáciu prvkov, ktoré sa majú použiť so selénom. Umožňuje nám to zacieliť na presný prvok z jazyka Java na extrahovanie informácií, ako aj interaktívnu akciu, ako je kliknutie na tlačidlo. Tu je základ, ako používať Inšpektor.

Otvorte prehliadač Google Chrome a prejdite na stránku, povedzte stránku IMDb pre Liga spravodlivosti (2017).

Poďme nájsť prvok, ktorý chceme zacieliť, povedzme zhrnutie filmu. Kliknite pravým tlačidlom myši na súhrn a z kontextovej ponuky vyberte možnosť „Skontrolovať“.

ako vyrobiť webový prehľadávač so selénom

Na karte „Prvky“ vidíme, že súhrnný text je a div s triedou súhrnný_text.

ako vyrobiť webový prehľadávač so selénom

Použitie CSS alebo XPath na výber

Selén podporuje výber prvkov zo stránky pomocou CSS. (Podporuje sa dialekt CSS CSS2). Napríklad na výber súhrnného textu zo stránky IMDb vyššie by sme napísali:

WebElement SummaryEl = driver.findElement (By.cssSelector("div.summary_text")); 

Môžete tiež použiť XPath na výber prvkov veľmi podobným spôsobom (Go tu pre špecifikácie). Na výber súhrnného textu by sme opäť urobili:

WebElement SummaryEl = driver.findElement (By.xpath("//div[@class='summary_text']")); 

XPath a CSS majú podobné možnosti, takže môžete použiť čokoľvek, čo vám vyhovuje.

Čítanie pošty Google z jazyka Java

Pozrime sa teraz na zložitejší príklad: načítanie pošty Google.

Spustite ovládač Chrome, prejdite na stránku gmail.com a počkajte, kým sa stránka načíta.

Ovládač WebDriver = nový ChromeDriver(); driver.get(" https://gmail.com"); nový WebDriverWait (ovládač, 10) .until (d -> d.getTitle().toLowerCase().startsWith("gmail")); 

Ďalej vyhľadajte pole e-mailu (je pomenované pomocou id identifierId) a zadajte e-mailovú adresu. Kliknite na Ďalšie a počkajte, kým sa načíta stránka s heslom.

/* Zadajte používateľské meno/e-mail */ { driver.findElement (By.cssSelector("#identifierId")).sendKeys (e-mail); driver.findElement (By.cssSelector(".RveJvd")).click(); } nový WebDriverWait (ovládač, 10) .until (d ->! d.findElements (By.xpath("//div[@id='heslo']")).isEmpty() );

Teraz zadáme heslo a klikneme na Ďalšie znova a počkajte, kým sa načíta stránka Gmail.

/* Zadajte heslo */ { driver .findElement (By.xpath("//div[@id='password']//input[@type='password']")) .sendKeys (heslo); driver.findElement (By.cssSelector(".RveJvd")).click(); } nový WebDriverWait (ovládač, 10) .until (d ->! d.findElements (By.xpath("//div[@class='Cp']")).isEmpty() );

Načítajte zoznam riadkov e-mailov a cyklujte cez každý záznam.

Zoznamriadky = driver .findElements (By.xpath("//div[@class='Cp']//table/tbody/tr")); for (WebElement tr: riadky) { }

Pre každý záznam načítajte Od lúka. Upozorňujeme, že niektoré položky Od môžu mať viacero prvkov v závislosti od počtu ľudí v konverzácii.

{ /* Od prvku */ System.out.println("Od: "); for (WebElement e: tr .findElements (By.xpath(.//div[@class='yW']/*"))) { System.out.println(" " + e.getAttribute("e-mail") + ", " + e.getAttribute("meno") + ", " + e.getText()); } }

Teraz získajte predmet.

{ /* Predmet */ System.out.println("Sub: " + tr.findElement (By.xpath(.//div[@class='yNN']")).getText()); }

A dátum a čas správy.

{ /* Dátum/Čas */ WebElement dt = tr.findElement (By.xpath(./td[8]/*")); System.out.println("Dátum: " + dt.getAttribute("title") + ", " + dt.getText()); }

Tu je celkový počet riadkov e-mailov na stránke.

System.out.println (rows.size() + "maily."); 

A nakoniec sme skončili, takže prehliadač ukončíme.

driver.quit(); 

Aby sme to zhrnuli, Selenium môžete použiť s prehliadačom Google Chrome na indexové prehľadávanie webových stránok, ktoré vo veľkej miere využívajú javascript. A pomocou Google Chrome Inspector je celkom jednoduché vypracovať požadovaný CSS alebo XPath na extrahovanie z prvku alebo interakciu s prvkom.

Máte nejaké projekty, ktoré profitujú z používania Selenium? A s akými problémami sa stretávate? Popíšte v komentároch nižšie.