Reklamcılık
Web Tarama, web sitelerinde rutin olarak gerçekleştirilen belirli görevleri otomatikleştirmek için son derece kullanışlıdır. Bir web sitesiyle etkileşim kurmak için tıpkı bir insanın yapacağı gibi bir tarayıcı yazabilirsiniz.
İçinde önceki bir makale Bir Web Sitesinden Bilgi Çekmek İçin Temel Bir Web Tarayıcısı Nasıl OluşturulurHiç bir web sitesinden bilgi almak istediniz mi? Bir web sitesinde gezinmek ve ihtiyacınız olanı çıkarmak için bir tarayıcıyı nasıl yazacağınız aşağıda açıklanmıştır. Devamını oku , bir yazmanın temellerini ele aldık web tarayıcısı Web Kazıma Nedir? Web Sitelerinden Nasıl Veri Toplanır?Web sayfalarındaki verileri okurken değerli zamanınızı kaybettiğinizi hiç gördünüz mü? Web kazıma ile istediğiniz verileri nasıl bulacağınız aşağıda açıklanmıştır. Devamını oku python modülünü kullanarak scrapy. Bu yaklaşımın sınırlaması, tarayıcının javascript'i desteklememesidir. Kullanıcı arayüzünü yönetmek için yoğun javascript kullanan web sitelerinde düzgün çalışmayacaktır. Bu gibi durumlar için, Google Chrome'u kullanan ve dolayısıyla javascript'i tıpkı normal bir kullanıcı güdümlü Chrome tarayıcısı gibi işleyebilen bir tarayıcı yazabilirsiniz.
Google Chrome'u otomatikleştirmek, adı verilen bir aracın kullanılmasını içerir. Selenyum. Programınız ve Tarayıcı arasında yer alan ve tarayıcıyı programınız boyunca çalıştırmanıza yardımcı olan bir yazılım bileşenidir. Bu makalede, sizi Google Chrome'u otomatikleştirme sürecinin tamamına götürüyoruz. Adımlar genellikle şunları içerir:
- Selenyum'u kurma
- Web sayfasının bölümlerini belirlemek için Google Chrome Inspector'ı kullanma
- Google Chrome'u otomatikleştirmek için bir java programı yazma
Bu makalenin amacı için, Google Mail'i Java'dan nasıl okuyacağınızı inceleyelim. Google, postaları okumak için bir API (Uygulama Programlama Arayüzü) sağlarken, bu makalede, süreci göstermek için Google Mail ile etkileşim kurmak için Selenium kullanıyoruz. Google Mail, javascript'i yoğun bir şekilde kullanır ve bu nedenle Selenium'u öğrenmek için iyi bir adaydır.
Selenyum Kurulumu
Web Sürücüsü
Yukarıda açıklandığı gibi, Selenyum ayrı bir süreç olarak çalışan ve java programı adına eylemler gerçekleştiren bir yazılım bileşeninden oluşur. Bu bileşen denir Web Sürücüsü ve bilgisayarınıza indirilmelidir.
Buraya Tıkla Selenium indirme sitesine gitmek için en son sürüme tıklayın ve bilgisayarınızın işletim sistemi (Windows, Linux veya MacOS) için uygun dosyayı indirin. içeren bir ZIP arşividir. chromedriver.exe. gibi uygun bir yere çıkarın. C:\WebDrivers\chromedriver.exe. Bu konumu daha sonra Java programında kullanacağız.
Java Modülleri
Sonraki adım, Selenium'u kullanmak için gerekli java modüllerini kurmaktır. Java programını oluşturmak için Maven kullandığınızı varsayarsak, aşağıdaki bağımlılığı ekleyin. POM.xml.
org.seleniumhq.selenium selenyum-java 3.8.1
Oluşturma işlemini çalıştırdığınızda, gerekli tüm modüller bilgisayarınıza indirilmeli ve kurulmalıdır.
Selenyum İlk Adımlar
Selenyum ile başlayalım. İlk adım, bir ChromeSürücüsü misal:
WebDriver sürücüsü = yeni ChromeDriver();
Bu bir Google Chrome penceresi açmalıdır. Google arama sayfasına gidelim.
sürücü.get(" http://www.google.com");
Bir arama yapabilmemiz için metin giriş öğesine bir başvuru alın. Metin giriş öğesinin adı vardır Q. Yöntemi kullanarak sayfadaki HTML öğelerini buluruz WebDriver.findElement().
WebElement öğesi = driver.findElement (By.name("q"));
Yöntemi kullanarak herhangi bir öğeye metin gönderebilirsiniz. sendKeys(). Bir arama terimi gönderelim ve onu yeni bir satırla bitirelim, böylece arama hemen başlasın.
element.sendKeys("sonlandırıcı\n");
Artık bir arama devam ettiğine göre, sonuç sayfasını beklememiz gerekiyor. Bunu şu şekilde yapabiliriz:
yeni WebDriverWait (sürücü, 10) .until (d -> d.getTitle().toLowerCase().startsWith("terminator"));
Bu kod temel olarak Selenium'a 10 saniye beklemesini ve sayfa başlığı ile başladığında geri dönmesini söyler. sonlandırıcı. Beklenecek koşulu belirtmek için bir lambda işlevi kullanırız.
Şimdi sayfanın başlığını alabiliriz.
System.out.println("Başlık: " + driver.getTitle());
Oturumu tamamladığınızda, tarayıcı penceresi şu şekilde kapatılabilir:
sürücü.quit();
Ve bu, millet, selenyum aracılığıyla java kullanılarak kontrol edilen basit bir tarayıcı oturumudur. Oldukça basit görünüyor, ancak normalde elle yapmanız gereken birçok şeyi programlamanıza olanak tanıyor.
Google Chrome Denetçisini Kullanma
Google Chrome Denetçisi Web Sitesi Sorunlarını Chrome Geliştirici Araçları veya Firebug ile ÇözünŞimdiye kadar jQuery eğitimlerimi takip ettiyseniz, bazı kod sorunlarıyla karşılaşmış ve bunları nasıl düzelteceğinizi bilmiyor olabilirsiniz. İşlevsel olmayan bir kod parçasıyla karşılaştığınızda, çok... Devamını oku Selenium ile kullanılacak öğeleri tanımlamak için paha biçilmez bir araçtır. Bilgi çıkarmak için Java'dan tam öğeyi ve bir düğmeyi tıklamak gibi etkileşimli bir eylemi hedeflememizi sağlar. İşte Müfettiş'in nasıl kullanılacağına dair bir başlangıç.
Google Chrome'u açın ve bir sayfaya gidin, şunu söyleyin: IMDb sayfası Adalet Birliği (2017).
Film özeti diyelim, hedeflemek istediğimiz öğeyi bulalım. Özete sağ tıklayın ve açılır menüden “İncele”yi seçin.
“Öğeler” sekmesinden özet metninin bir div bir sınıf ile özet_metin.
Seçim için CSS veya XPath Kullanma
Selenium, CSS kullanarak sayfadan öğe seçmeyi destekler. (Desteklenen CSS lehçesi CSS2). Örneğin yukarıdaki IMDb sayfasından özet metni seçmek için şunu yazardık:
WebElement özetEl = driver.findElement (By.cssSelector("div.summary_text"));
Öğeleri çok benzer bir şekilde seçmek için XPath'ı da kullanabilirsiniz (Git Burada özellikler için). Özet metnini seçmek için yine şunu yapardık:
WebElement özetEl = driver.findElement (By.xpath("//div[@class='summary_text']"));
XPath ve CSS'nin benzer yetenekleri vardır, böylece hangisinde rahatsanız onu kullanabilirsiniz.
Java'dan Google Mail Okuma
Şimdi daha karmaşık bir örneğe bakalım: Google Mail'i getirme.
Chrome Sürücüsünü başlatın, gmail.com'a gidin ve sayfa yüklenene kadar bekleyin.
WebDriver sürücüsü = yeni ChromeDriver(); sürücü.get(" https://gmail.com"); yeni WebDriverWait (sürücü, 10) .until (d -> d.getTitle().toLowerCase().startsWith("gmail"));
Ardından, e-posta alanını arayın (kimliği ile adlandırılır) tanımlayıcıId) ve e-posta adresini girin. Tıkla Sonraki düğmesine basın ve şifre sayfasının yüklenmesini bekleyin.
/* kullanıcı adını/e-posta adresini yazın */ { driver.findElement (By.cssSelector("#identifierId")).sendKeys (e-posta); driver.findElement (By.cssSelector(".RveJvd")).click(); } yeni WebDriverWait (sürücü, 10) .until (d ->! d.findElements (By.xpath("//div[@id='parola']")).isEmpty() );
Şimdi şifreyi giriyoruz, tıklayın Sonraki düğmesine tekrar basın ve Gmail sayfasının yüklenmesini bekleyin.
/* Şifreyi girin */ { sürücü .findElement (By.xpath("//div[@id='parola']//input[@type='parola']")) .sendKeys (parola); driver.findElement (By.cssSelector(".RveJvd")).click(); } yeni WebDriverWait (sürücü, 10) .until (d ->! d.findElements (By.xpath("//div[@class='Cp']")).isEmpty() );
E-posta satırlarının listesini alın ve her girişin üzerinden geçin.
Listesatırlar = sürücü .findElements (By.xpath("//div[@class='Cp']//table/tbody/tr")); for (WebElement tr: satırlar) { }
Her giriş için, İtibaren alan. Bazı Gönderen girişlerinin, konuşmadaki kişi sayısına bağlı olarak birden çok öğeye sahip olabileceğini unutmayın.
{ /* Öğeden */ System.out.println("Kimden: "); for (WebElement e: tr .findElements (By.xpath(".//div[@class='yW']/*"))) { System.out.println(" " + e.getAttribute("email")) + ", " + e.getAttribute("ad") + ", " + e.getText()); } }
Şimdi konuyu getir.
{ /* Konu */ System.out.println("Alt: " + tr.findElement (By.xpath(".//div[@class='yNN']")).getText()); }
Ve mesajın tarihi ve saati.
{ /* Tarih/Saat */ WebElement dt = tr.findElement (By.xpath("./td[8]/*")); System.out.println("Tarih: " + dt.getAttribute("başlık") + ", " + dt.getText()); }
İşte sayfadaki toplam e-posta satırı sayısı.
System.out.println (rows.size() + "postalar.");
Ve son olarak, tarayıcıdan çıktığımız için işimiz bitti.
sürücü.quit();
Özetlemek gerekirse, javascript'i yoğun olarak kullanan web sitelerini taramak için Selenium'u Google Chrome ile birlikte kullanabilirsiniz. Ve Google Chrome Inspector ile, bir öğeden çıkartmak veya bir öğeyle etkileşim kurmak için gerekli CSS veya XPath'i bulmak oldukça kolaydır.
Selenium kullanmanın fayda sağladığı projeleriniz var mı? Ve bununla hangi sorunlarla karşılaşıyorsunuz? Lütfen aşağıdaki yorumlarda açıklayın.