Jak si vyrobit webový prohledávač pomocí selenu

  • Edmund Richardson
  • 0
  • 3596
  • 671
reklama

Procházení webu je velmi užitečné pro automatizaci určitých úkolů prováděných rutinně na webových stránkách. Můžete napsat prolézací modul pro interakci s webovými stránkami stejně, jako by to udělal člověk.

V dřívějším článku Jak vytvořit základní webový prohledávač k vytažení informací z webu Jak vytvořit základní webový prohledávač k vytažení informací z webu Už jste někdy chtěli zachytit informace z webu? Můžete napsat prolézací modul pro procházení webu a extrahovat přesně to, co potřebujete. , pokryli jsme základy psaní webcrawleru Co je to Web Scraping? Jak sbírat data z webových stránek Co je to škrábání na webu? Jak sbírat data z webových stránek Už jste někdy zjistili, že ztrácíte drahocenný čas při čtení dat na webových stránkách? Zde je návod, jak najít požadované údaje pomocí webového škrabání. pomocí python modulu, škrábání. Omezení tohoto přístupu spočívá v tom, že prolézací modul nepodporuje javascript. To nebude fungovat správně s těmi weby, které intenzivně používají javascript pro správu uživatelského rozhraní. V takových situacích můžete napsat prolézací modul, který používá prohlížeč Google Chrome, a proto dokáže zpracovávat javascript stejně jako běžný prohlížeč Chrome poháněný uživateli..

Automatizace Google Chrome zahrnuje použití nástroje s názvem Selen. Jedná se o softwarovou součást, která je umístěna mezi programem a prohlížečem a pomáhá vám projít prohlížeč programem. V tomto článku vás provádíme celým procesem automatizace Google Chrome. Kroky obvykle zahrnují:

  • Nastavení selenu
  • Pomocí prohlížeče Google Chrome Inspector identifikujte části webové stránky
  • Vytvoření programu java pro automatizaci Google Chrome

Pro účely tohoto článku prozkoumejme, jak číst Google Mail z javy. Zatímco Google poskytuje API (Application Programming Interface) pro čtení pošty, v tomto článku používáme Selenium pro interakci s Google Mail pro demonstraci procesu. Google Mail intenzivně využívá javascript, a je tedy dobrým kandidátem na studium selenu.

Nastavení selenu

Webový ovladač

Jak bylo vysvětleno výše, Selenium se skládá ze softwarové komponenty, která běží jako samostatný proces a provádí akce jménem programu java. Tato součást se nazývá Webový ovladač a musí být stažena do počítače.

Klepnutím sem přejdete na web pro stahování Selenium, klikněte na nejnovější verzi a stáhněte si příslušný soubor pro váš operační systém (Windows, Linux nebo MacOS). Je to ZIP archiv obsahující chromedriver.exe. Rozbalte jej na vhodné místo, jako je C: \ WebDrivers \ chromedriver.exe. Toto umístění použijeme později v programu java.

Moduly Java

Dalším krokem je nastavení java modulů potřebných pro použití selenu. Za předpokladu, že používáte Maven k sestavení programu java, přidejte do svého počítače následující závislost POM.xml.

   org.seleniumhq.selen selenium-java 3.8.1   

Při spuštění procesu sestavení by měly být všechny požadované moduly staženy a nastaveny v počítači.

Selenium První kroky

Začněme Seleniem. Prvním krokem je vytvoření a ChromeDriver instance:

Ovladač WebDriver = nový ChromeDriver (); 

To by mělo otevřít okno Google Chrome. Přejděte na stránku vyhledávání Google.

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

Získat odkaz na prvek pro zadávání textu, abychom mohli provést vyhledávání. Prvek pro zadávání textu má název q. Pomocí této metody vyhledáme HTML prvky na stránce WebDriver.findElement ().

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

Pomocí metody můžete odeslat text do libovolného prvku sendKeys (). Zašleme hledaný výraz a ukončíme jej novým řádkem, takže hledání začne okamžitě.

element.sendKeys ("terminator \ n"); 

Nyní, když probíhá vyhledávání, musíme počkat na stránku s výsledky. Můžeme to udělat následovně:

nový WebDriverWait (driver, 10) .until (d -> d.getTitle (). toLowerCase (). startsWith ("terminator")); 

Tento kód v zásadě říká Selenu, aby počkal 10 sekund a vrátil se, když začíná nadpis stránky terminátor. Pomocí funkce lambda určíme podmínku, na kterou čekáme.

Nyní můžeme získat název stránky.

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

Po dokončení relace lze okno prohlížeče zavřít pomocí:

driver.quit (); 

A to, lidi, je jednoduchá relace prohlížeče řízená pomocí Java pomocí selenu. Vypadá to celkem jednoduše, ale umožňuje vám programovat spoustu věcí, které byste normálně museli dělat ručně.

Pomocí Google Chrome Inspector

Google Chrome Inspector Zjistit problémy s webem pomocí vývojářských nástrojů Chrome nebo Firebug Zjistit problémy s webem pomocí vývojářských nástrojů Chrome nebo Firebug Pokud jste dosud sledovali mé tutoriály jQuery, možná jste již narazili na některé problémy s kódem a nevíte, jak to opravit. jim. Když čelíme nefunkčnímu kódu, je to velmi… je neocenitelným nástrojem k identifikaci prvků, které mají být použity s Seleniem. To nám umožňuje cílit přesný prvek z javy pro extrahování informací i pro interaktivní akci, jako je kliknutí na tlačítko. Zde je základní informace o tom, jak inspektor používat.

Otevřete Google Chrome a přejděte na stránku, řekněme stránku IMDb pro League League (2017).

Najdeme prvek, který chce cílit, řekněme shrnutí filmu. Klikněte pravým tlačítkem na shrnutí a vyberte “Kontrolovat” z rozbalovací nabídky.

Z “Prvky” kartu, můžeme vidět, že souhrnný text je div s třídou shrnutí_text.

Použití CSS nebo XPath pro výběr

Selenium podporuje výběr prvků ze stránky pomocí CSS. (Dialekt podporovaný CSS je CSS2). Například pro výběr souhrnného textu z výše uvedené stránky IMDb bychom napsali:

Shrnutí WebElementEl = driver.findElement (By.cssSelector ("div.summary_text")); 

XPath můžete také použít k výběru prvků velmi podobným způsobem (specifikace najdete zde). K opětovnému výběru souhrnného textu bychom udělali:

Shrnutí WebElementEl = driver.findElement (By.xpath ("// div [@ class = 'summary_text']"))); 

XPath a CSS mají podobné funkce, takže můžete používat, podle toho, co vám vyhovuje.

Čtení Google Mail z Javy

Podívejme se nyní na složitější příklad: načítání Google Mail.

Spusťte ovladač Chrome, přejděte na gmail.com a počkejte, až se stránka načte.

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

Dále vyhledejte pole pro e-mail (je pojmenováno s id identifikátorId) a zadejte e-mailovou adresu. Klikněte na ikonu další a počkejte, až se načte stránka hesla.

/ * Zadejte uživatelské jméno / e-mail * / driver.findElement (By.cssSelector ("# identifikátorId")). SendKeys (email); driver.findElement (By.cssSelector (". RveJvd")). click ();  nový WebDriverWait (driver, 10) .until (d ->! d.findElements (By.xpath ("// div [@ id = 'password']"))). isEmpty ()); 

Nyní zadáme heslo, klikněte na další a počkejte, až se načte stránka Gmailu.

/ * Zadejte heslo * / driver .findElement (By.xpath ("// div [@ id = 'password'] // input [@ type = 'password']"))) .sendKeys (heslo); driver.findElement (By.cssSelector (". RveJvd")). click ();  new WebDriverWait (driver, 10) .until (d ->! d.findElements (By.xpath ("// div [@ class = 'Cp']"))). isEmpty ()); 

Načíst seznam e-mailových řádků a smyčky nad každou položku.

Seznam řádků = driver .findElements (By.xpath ("// div [@ class = 'Cp'] // tabulka / tbody / tr")); pro (WebElement tr: řádky)  

Pro každou položku načtěte Z pole. Upozorňujeme, že některé záznamy typu From mohou mít více prvků v závislosti na počtu lidí v konverzaci.

/ * From Element * / System.out.println ("From:"); for (WebElement e: tr .findElements (By.xpath (".// div [@ class = 'yW'] / *"))) System.out.println ("" + e.getAttribute ("email") + "," + e.getAttribute ("name") + "," + e.getText ());  

Nyní načtěte předmět.

/ * Subject * / System.out.println ("Sub:" + tr.findElement (By.xpath (".// div [@ class = 'y6']")). GetText ());  

A datum a čas zprávy.

/ * Datum / čas * / WebElement dt = tr.findElement (By.xpath ("./ td [8] / *")); System.out.println ("Date:" + dt.getAttribute ("title") + "," + dt.getText ());  

Zde je celkový počet řádků e-mailu na stránce.

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

A konečně jsme hotovi, takže ukončíme prohlížeč.

driver.quit (); 

Chcete-li shrnout, můžete použít Selenium s Google Chrome pro procházení těch webů, které používají javascript. A s prohlížečem Google Chrome Inspector je poměrně snadné vypracovat požadovaný CSS nebo XPath, který lze extrahovat z elementu nebo s ním pracovat,.

Máte nějaké projekty, které využívají Selenium? A kterým problémům čelíte? Popište prosím níže uvedené komentáře.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.