6

मैं सेलेनियम के लिए नया हूं और मैं किसी दिए गए साइट से स्वचालित रूप से पीडीएफ फ़ाइलों को डाउनलोड करने के लिए एक स्क्रैपर लिख रहा हूं।सेलेनियम पीडीएफ स्वचालित डाउनलोड काम नहीं कर रहा

from selenium import webdriver 

fp = webdriver.FirefoxProfile() 

fp.set_preference("browser.download.folderList",2); 
fp.set_preference("browser.download.manager.showWhenStarting",False) 
fp.set_preference("browser.download.dir", "/home/jill/Downloads/Dinamalar") 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf") 

browser = webdriver.Firefox(firefox_profile=fp) 
browser.get("http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf"); 
webobj = browser.find_element_by_id("download").click(); 

मैं चरणों सेलेनियम documentation में हैं और इस link में उल्लेख किया पीछा:

नीचे मेरी कोड है। मुझे यकीन नहीं है कि हर बार डाउनलोड संवाद बॉक्स क्यों दिखाया जा रहा है।

क्या इसे ठीक करने के लिए वैसे भी है और क्या "एप्लिकेशन/सब" देने का कोई तरीका हो सकता है ताकि सभी फाइलें डाउनलोड की जा सकें (काम-आसपास)?

उत्तर

6

निर्मित pdfjs प्लगइन और URL पर पहुंच अक्षम करें - पीडीएफ फाइल स्वचालित रूप से डाउनलोड किया जाएगा, कोड:

from selenium import webdriver 

fp = webdriver.FirefoxProfile() 

fp.set_preference("browser.download.folderList", 2) 
fp.set_preference("browser.download.manager.showWhenStarting",False) 
fp.set_preference("browser.download.dir", "/home/jill/Downloads/Dinamalar") 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf,application/x-pdf") 

fp.set_preference("pdfjs.disabled", "true") # < KEY PART HERE 

browser = webdriver.Firefox(firefox_profile=fp) 
browser.get("http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf"); 

अद्यतन (पूरा कोड है कि मेरे लिए काम किया):

from selenium import webdriver 

mime_types = "application/pdf,application/vnd.adobe.xfdf,application/vnd.fdf,application/vnd.adobe.xdp+xml" 

fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList", 2) 
fp.set_preference("browser.download.manager.showWhenStarting", False) 
fp.set_preference("browser.download.dir", "/home/aafanasiev/Downloads") 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", mime_types) 
fp.set_preference("plugin.disable_full_page_plugin_for_types", mime_types) 
fp.set_preference("pdfjs.disabled", True) 

browser = webdriver.Firefox(firefox_profile=fp) 
browser.get("http://epaper.dinamalar.com/") 

webobj_get_link = browser.find_element_by_id("liSavePdf") 
webobj_get_object = webobj_get_link.find_element_by_tag_name("a") 
webobj_get_object.click() 
+0

मुझे अभी भी बताए गए कोड के बाद भी समस्या का सामना करना पड़ रहा है। किसी भी मौके में ओएस का कोई हिस्सा है? मैं UBUNTU 14.04 का उपयोग करता हूं। – Gaara

+0

@ गारा दिलचस्प, यह मेरे लिए काम करता है: मैक पर सेलेनियम 2.45 + फ़ायरफ़ॉक्स 35.0.1। – alecxe

+0

मेरा सेलेनियम 2.45.0, उबंटू 14.04 फ़ायरफ़ॉक्स 38.0 है। मैं हर संभावना की कोशिश कर रहा हूँ। डाउनलोड पॉप अप विंडो विंडो हैंडल के तहत भी नहीं आती है। यह सतर्कता में नहीं आता है। क्या और किया जा सकता है पर कोई विचार? यदि आप चाहें तो मैं अपनी लिपि में एक लिंक पोस्ट कर सकता हूं। – Gaara

0

चूंकि एचटीएमएल कोड उपलब्ध नहीं है, मेरा अनुमान है कि इस लाइन

webobj = browser.find_element_by_id("download").click(); 

वास्तव में onclick घटना कहता है, लेकिन आप इसे ठीक से संभाल नहीं है। दूसरे शब्दों में, आप जो खो रहे हैं वह वह स्थान है जहां यह .pdf फ़ाइल संग्रहीत की जाएगी। मुझे पाइथन प्रोग्रामिंग के साथ बहुत कम अनुभव है, लेकिन एक समाधान HTTP वेब क्लाइंट lib का उपयोग करने के लिए हो सकता है, जो आपको फ़ाइलों को स्वचालित रूप से डाउनलोड करने की अनुमति देगा। कुछ CSharp's WebClient.DownloadFile Method (String, String) की तरह। और यदि सही तरीके से उपयोग किया जाता है, तो आप इस क्रिया के लिए किसी भी सेलेनियम कमांड को छोड़ सकते हैं।

शायद this post जैसी कुछ अच्छी शुरुआत होगी।

0

मैं निम्नलिखित कोड का परीक्षण किया और मैं सफलतापूर्वक विंडोज 7 पर अपने पीडीएफ डाउनलोड किया गया:

fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList", 2) 
fp.set_preference("browser.download.manager.showWhenStarting", False) 
fp.set_preference("browser.download.dir", download_location) 
fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf") 
fp.set_preference("pdfjs.disabled", True) 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf") 



driver = webdriver.Firefox(fp) 
driver.implicitly_wait(10) 
driver.maximize_window() 
driver.get("http://epaper.dinamalar.com/") 
element = driver.find_element_by_css_selector("li#liSavePdf>a>img") 
element.click() 
संबंधित मुद्दे