2011-01-09 16 views
6

मेरे पास एक ऐसा प्रोग्राम है जो एक्सेल फ़ाइल से डेटा लेता है और उपयोगकर्ता के लिए इसका उपयोग करता है। लेकिन एक्सेल फ़ाइल में अपडेट प्राप्त करने के लिए उन्हें किसी वेबसाइट से डाउनलोड करने की आवश्यकता है। मैंने मूल रूप से वेबसाइट पर नेविगेट करने के लिए रोबोट क्लास का उपयोग करने का प्रयास किया, उपयोगकर्ता नाम और पासवर्ड के साथ लॉगिन किया, फिर वेबसाइट के सही सेक्शन पर नेविगेट करें और "एक्सेल स्प्रेडशीट डाउनलोड करें" बटन ढूंढें और उसे क्लिक करें। लेकिन मैं समझता हूं कि यह करने का एक भयानक तरीका है और यह हमेशा काम नहीं करता है। मैं ऐसा करने का एक बेहतर तरीका क्या कर सकता हूं ताकि मेरा प्रोग्राम वेबसाइट पर जा सके और जिस पेज को मैं चाहता हूं उसे नेविगेट कर सकूं और फिर डेटा डाउनलोड कर सकूं। मैंने 'पेज स्क्रैपिंग' के बारे में पढ़ा लेकिन मुझे नहीं लगता कि यह मुझे ऐसा करने की अनुमति देगा। मैं वास्तव में वेबपृष्ठ से बातचीत करना चाहता हूं कि इसकी सामग्री इतनी अधिक डाउनलोड न हो। कोई भी मदद बहुत अच्छी रहेगी। धन्यवाद, पीटरजावा एप्लिकेशन को वेबसाइट के साथ कैसे इंटरैक्ट किया जाए

+0

वेब साइट एक API आप एक सबमिट बटन के माध्यम से इसे पाने के लिए के बजाय का उपयोग कर सकते प्रदान करता है। –

उत्तर

12

आप वास्तव में के साथ बातचीत करने की जरूरत है वेबसाइट तब सेलेनियम/वेबड्राइवर आपकी आवश्यकताओं के लिए बिल्कुल सही है:

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

नमूना गूगल खोज:

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

उपयोगकर्ता को दिखाए जाने के बिना इसे पूरा करने का कोई तरीका होगा? जैसा ब्राउज़र में कभी नहीं खुलता है लेकिन दृश्यों के पीछे सबकुछ अभी भी किया जाएगा? – Ethan

+0

निश्चित रूप से फ़ैंटॉमजेएस जैसे हेडलेस ब्राउज़र का उपयोग करें या हेडलेस मोड में ब्राउज़र प्रारंभ करें – Pablojim

0

यदि आप यूआरएल जानते हैं तो आप फ़ाइल डाउनलोड करने के लिए http अनुरोधों का उपयोग कर सकते हैं। एक त्वरित Google ने यह पाया: http://download.oracle.com/javase/tutorial/networking/urls/readingWriting.html फ़ाइल डाउनलोड करें और डिस्क पर सहेजें

+0

धन्यवाद, मैंने भविष्य के लिए लिंक सहेजा है, लेकिन जिस लिंक को मुझे डाउनलोड करने की आवश्यकता है, उसके पास एक सीधा यूआरएल नहीं है जिसे मैं वेबसाइट पर पहले लॉग इन किए बिना प्राप्त कर सकता हूं। इसलिए मुझे वेबसाइट से बातचीत करने के लिए एक और तरीका चाहिए ताकि मैं लॉग इन कर सकूं और – Peter

+0

लिंक पर जा सकूं। क्या वेबसाइट में प्रश्न करने के लिए किसी भी प्रकार की एपीआई प्रदान की जाती है? यदि नहीं, तो स्क्रैपिंग वास्तव में आपका एकमात्र विकल्प है, आपके रोबोट समाधान का उपयोग करने के अलावा (जो कि आप कहते हैं, बहुत भयानक है :) –

0

मुझे समझ में नहीं आया कि अब हम एक्सेल फ़ाइल डाउनलोड करने के लिए उपयोग कर रहे हैं। मैं आप निम्नलिखित समाधान प्रदान करते हैं कर सकते हैं:

  1. Wget for java
  2. Apache Commons Net for network protocols
  3. cURL for java

मुझे लगता है यह आप की मदद करनी चाहिए ...

संबंधित मुद्दे

 संबंधित मुद्दे