2011-01-09 27 views
6

Verileri bir excel dosyasından alan ve kullanıcı için değiştiren bir programım var. Ancak excel dosyasına güncellemeler almak için bir web sitesinden indirilmeleri gerekir. Başlangıçta web sitesine gitmek, kullanıcı adı ve parola ile giriş yapmak için robot sınıfını kullanmayı denedim, ardından web sitesinin doğru bölümüne gidin ve "excel e-tablosunu indir" yazan düğmeyi bulun ve tıklayın. Ama anlıyorum ki bunu yapmanın korkunç bir yolu ve her zaman işe yaramıyor. Programın web sitesine gidebilmesi ve istediğim sayfaya gidebilmesi ve ardından verileri indirebilmesi için bunu yapmanın daha iyi bir yolu nedir? 'Sayfa kazıma' hakkında okudum ama bunu yapmama izin vereceğini düşünmüyorum. Web sayfasıyla etkileşimde bulunmak istediğim için çok fazla içerik indirmek istemiyorum. Herhangi bir yardım harika olurdu. Teşekkür, PeterJava uygulaması bir web sitesiyle nasıl etkileşime giriyor

+0

web sitesi bir gönderme düğmesi aracılığıyla almak zorunda yerine kullanılabilecek bir API sağlar mı. –

cevap

12

aslında etkileşim gerekiyorsa web sitesi daha sonra selenyum/webdriver ihtiyaçlarınız için mükemmel:

http://code.google.com/p/selenium/wiki/GettingStarted

Numune Google arama:

package org.openqa.selenium.example; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; 

public class Example { 
    public static void main(String[] args) { 
     // Create a new instance of the html unit driver 
     // Notice that the remainder of the code relies on the interface, 
     // not the implementation. 
     WebDriver driver = new HtmlUnitDriver(); 

     // And now use this to visit Google 
     driver.get("http://www.google.com"); 

     // Find the text input element by its name 
     WebElement element = driver.findElement(By.name("q")); 

     // Enter something to search for 
     element.sendKeys("Cheese!"); 

     // Now submit the form. WebDriver will find the form for us from the element 
     element.submit(); 

     // Check the title of the page 
     System.out.println("Page title is: " + driver.getTitle()); 
    } 
} 
+0

Neler olup bittiğini gösteren OLMADAN bunu başarmanın bir yolu var mıydı? Tarayıcıda olduğu gibi asla açılmaz ama her şey hala sahne arkasında yapılacaktı? – Ethan

+0

PhantomJS gibi başsız bir tarayıcı kullanın veya başsız modda bir tarayıcı başlatın. – Pablojim

0

URL'yi biliyorsanız dosyayı indirmek için http isteklerini kullanabilirsiniz. http://download.oracle.com/javase/tutorial/networking/urls/readingWriting.html dosyayı indirmek ve diske

+0

Teşekkürler, geleceğin bağlantısını kaydettim, ancak indirmem gereken bağlantı, web sitesine giriş yapmadan önce alabileceğim doğrudan bir URL'ye sahip değil. Bu yüzden, web sitesiyle etkileşimde bulunabilmem için daha çok bir yola ihtiyacım var, böylece giriş yapabilirim ve bağlantıya ulaşabilirim – Peter

+0

Bu web sitesi bunu yapmak için herhangi bir API sunuyor mu? Değilse, robot çözümünüzü kullanmaktan başka, kazıma gerçekten tek seçeneğinizdir (ki, dediğiniz gibi, oldukça korkunç). –

İlgili konular