2013-05-02 5 views
7

के साथ डाउनलोड निर्देशिका परिभाषित करें सबकुछ शीर्षक में है!क्रोमड्राइवर सेलेनियम के लिए डाउनलोड निर्देशिका को पाइथन

क्या अजगर-क्रोमड्रिवर के लिए डाउनलोड निर्देशिका को पाइथन के साथ परिभाषित करने का कोई तरीका है?

कई शोधों के बावजूद, मुझे कुछ निर्णायक नहीं मिला है ... नौसिखिया के रूप में, मैंने क्रोमड्रिवर के लिए "वांछित_ क्षमताओं" या "विकल्प" के बारे में कई चीज़ें देखी हैं लेकिन कुछ भी मेरी समस्या का समाधान नहीं कर पाया है। .. (और मुझे अभी भी पता नहीं है कि यह होगा!)

मेरी समस्या को थोड़ा और समझाने के लिए: मेरे पास स्कैन करने के लिए बहुत सारे यूआरएल हैं (200 000) और प्रत्येक यूआरएल के लिए फ़ाइल डाउनलोड करने के लिए। मुझे यूआरएल के साथ एक टेबल बनाना है, जिस जानकारी पर मैंने स्क्रैप किया है, और फ़ाइल का नाम जिसे मैंने अभी भी प्रत्येक वेबपृष्ठ के लिए डाउनलोड किया है। वॉल्यूम के साथ मुझे इलाज करना है, मैंने धागे बनाए हैं जो उपचार को तेज करने के लिए क्रोमरेड्राइवर के कई उदाहरण खोलते हैं। समस्या यह है कि प्रत्येक डाउनलोड की गई फ़ाइल एक ही डिफ़ॉल्ट निर्देशिका में आती है और मैं किसी फ़ाइल को यूआरएल से जोड़ने में सक्षम नहीं हूं ... तो, विचार है कि प्रत्येक थ्रेड के लिए एक डाउनलोड निर्देशिका बनाने के लिए उन्हें एक प्रबंधित करें एक।

अगर किसी के पास शीर्षक में मेरे प्रश्न का उत्तर है या डाउनलोड की गई फ़ाइल की पहचान करने के लिए एक वर्कअराउंड है और इसे वर्तमान यूआरएल से लिंक करें, तो मैं आभारी रहूंगा!

+0

आम तौर पर मैं आप क्रोम का उपयोग कर बातें डाउनलोड नहीं करते हैं सुझाव है, यह आमतौर पर एक बुरी तरह से बाहर सोचा परीक्षण है कि बस एक स्थिर फ़ोल्डर में सब कुछ डाउनलोड करता है। क्या आप डाउनलोड की गई फाइलों के साथ कुछ कर रहे हैं? इसका एक पठन लें: http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/ और फिर यह http://www.blog.pythonlibrary.org/2012/06/07/python-101-how-to-download-a-file/ – Ardesco

+0

हाय हैलो और आपके उत्तर के लिए धन्यवाद। मैं वास्तव में परीक्षण चलाने के लिए सेलेनियम का उपयोग नहीं करता लेकिन वास्तव में पोस्ट उपचार के लिए डेटा सीएसवी फ़ाइल के बड़े पैमाने पर डाउनलोड स्वचालित करने के लिए। मैंने urllib2 तरीके का पता लगाने की कोशिश की है, लेकिन मुझे साइट पर प्रमाणित करने के लिए कठिन कठिनाइयों से मुलाकात की गई है ... (शायद क्योंकि मैं रविवार-DIY-नौसिखिया हूं और सेलेनियम सुनहरा अंडा हंस रहा है जब मुझे यह मिला! ...) – matlabat

उत्तर

1

क्रोमरेड्रिवर 1 के लिए एक नई प्रोफ़ाइल बनाएं, और उस प्रोफ़ाइल के अंदर वांछित स्थान पर download.default_directory सेट करें, और chrome.profile का उपयोग करके क्रोम के लिए यह प्रोफ़ाइल सेट करें। selenium-chromedriver पैकेज में नई प्रोफ़ाइल बनाने के लिए कुछ विधियां होनी चाहिए (कम से कम यह रूबी के साथ होती है), क्योंकि उन्हें कुछ विशेष हैंडलिंग की आवश्यकता होती है।

Chromedriver2 प्रोफ़ाइल सेट करने का समर्थन नहीं करता है। आप इसके साथ वरीयताओं को सेट कर सकते हैं। आप डाउनलोड निर्देशिका सेट करना चाहते हैं यह तुम कैसे करते है:

prefs: { download: { default_directory: "/tmp" } } 

माणिक सेलेनियम-webdriver अभी तक इस सुविधा का समर्थन नहीं करता है, अजगर संस्करण हालांकि ऐसा हो सकता है।

1

मुझे हाल ही में एक ही समस्या का सामना करना पड़ा है। इंटरनेट में पाए गए कई समाधानों का प्रयास किया, कोई भी मदद नहीं की। क्रोम प्रारंभ यह

  • क्रोम छोड़ो
  • संशोधित डिफ़ॉल्ट/नव निर्मित उपयोगकर्ता में पसंद बताने के लिए

    • खाली उपयोगकर्ता के डेटा-निर्देशिका के साथ लॉन्च क्रोम (में/tmp फ़ोल्डर): तो अंत में मैं इस के लिए आया था

      "डाउनलोड": { "default_directory": "/tmp/tmpX7EADC.downloads", "directory_upgrade": सच }

      डाटा-निर्देशिका, जड़ वस्तु (सिर्फ एक उदाहरण) उन फ़ील्ड को जोड़ने
    • एक ही उपयोगकर्ता-डेटा-निर्देशिका

    साथ

  • लॉन्च क्रोम फिर अब यह सिर्फ ठीक काम करता है।

    एक और युक्ति: यदि आपको फ़ाइल का फ़ाइल नाम डाउनलोड नहीं किया जा रहा है, तो डाउनलोड निर्देशिका के स्नैपशॉट (फ़ाइलों की सूची) बनाएं, फिर फ़ाइल डाउनलोड करें और इसकी नाम कंपिनिन स्नैपशॉट और वर्तमान सूची द्वारा ढूंढें डाउनलोड निर्देशिका में फ़ाइलें।

  • +0

    यदि आपको समस्या के लिए किसी प्रकार के पायथन छद्म कोड की आवश्यकता है, तो मुझे बताएं। –

    0

    नीचे कोड का प्रयास करें ....

    System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); 
    String downloadFilepath = "/path/to/download"; 
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
    chromePrefs.put("profile.default_content_settings.popups", 0); 
    chromePrefs.put("download.default_directory", downloadFilepath); 
    ChromeOptions options = new ChromeOptions(); 
    HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>(); 
    options.setExperimentalOptions("prefs", chromePrefs); 
    options.addArguments("--test-type"); 
    DesiredCapabilities cap = DesiredCapabilities.chrome(); 
    cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap); 
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
    cap.setCapability(ChromeOptions.CAPABILITY, options); 
    WebDriver driver = new ChromeDriver(cap); 
    
    +1

    'पायथन 'प्रश्न के लिए' सी # 'जवाब? – DeepSpace

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