के साथ लिंक के href में जावास्क्रिप्ट को निष्पादित करना मैं पाइथन का उपयोग कर साइट पर कुछ पीडीएफ डाउनलोड करने की कोशिश कर रहा हूं (http://bibliotecadigitalhispanica.bne.es)।पायथन
मैंने urllib/urllib2/मशीनीकरण मॉड्यूल का उपयोग करने का प्रयास किया है (जिसे मैं अन्य साइटों के लिए उपयोग कर रहा हूं: इसमें यूआरएलओपेन, urlretrieve, आदि जैसे मानक फ़ंक्शन शामिल हैं), लेकिन यहां, लिंक में जावास्क्रिप्ट एम्बेडेड है href गुण जो कुछ प्रसंस्करण करता है और पीडीएफ खोलता है, जो कि इन मॉड्यूल को कम से कम जो मैंने यहां पढ़ा है, उससे संभाल नहीं पा रहा है। उदाहरण के लिए, जब मैं निम्न करें:
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
यह सिर्फ युक्त HTML पृष्ठ वापस मिल - मैं तो बस (उस पृष्ठ के अंदर यह करने के लिए कोई लिंक या तो, देखते हैं) पीडीएफ निकालने के लिए नहीं कर पा रहे।
मैं एक असली ब्राउज़र में हेडर के माध्यम से देख (Firefox में LiveHTTPHeaders एक्सटेंशन का उपयोग कर) कि HTTP अनुरोध का एक बहुत बना रहे हैं और अंत में पीडीएफ दिया जाता है (और ब्राउज़र में प्रदर्शित) से पता है। मैं इसे रोकने और इसे डाउनलोड करने में सक्षम होना चाहता हूं। कंक्रीटली, मुझे 302 और 304 प्रतिक्रियाओं की एक श्रृंखला मिलती है, अंततः पीडीएफ की ओर अग्रसर होती है।
यहां एक लिंक विशेषता का एक उदाहरण दिया गया है जो मैं क्रॉल कर रहा हूं: href = 'जावास्क्रिप्ट: open_window_delivery ("http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess");'
ऐसा लगता है कि अगर मैं href विशेषता में एम्बेडेड इस जावास्क्रिप्ट को निष्पादित करता हूं, तो मैं अंततः पीडीएफ दस्तावेज़ तक पहुंच सकता हूं। मैंने सेलेनियम के साथ प्रयास किया है, लेकिन यह एक उलझन में है - मुझे पूरा यकीन नहीं है कि इसका दस्तावेज़ीकरण पढ़ने पर इसका उपयोग कैसे किया जाए। क्या कोई एक तरीका सुझा सकता है (या तो एक मॉड्यूल के माध्यम से मैंने कोशिश नहीं की है या मेरे पास है) कि मैं यह कर सकता हूं?
इसके साथ किसी भी मदद के लिए आपको बहुत बहुत धन्यवाद।
क्या आप यूरी निकालने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं? – max
मैंने यह भी करने की कोशिश की है, यूआरआई को जावास्क्रिप्ट फ़ंक्शन कॉल के अंदर से खींचकर और फिर मैकेनाइजेशन और urllib2 के साथ उस तक पहुंचने का प्रयास कर रहा है, लेकिन अब तक कोई भाग्य नहीं है - यह मुझे केवल HTML पृष्ठ को वापस देता है: -/देखने से हेडर, ऐसा लगता है कि कुछ यूआरआई के साथ कई अनुरोध किए गए हैं, जिनमें कुछ रीडायरेक्ट भी शामिल हैं। क्या इन सभी प्रतिक्रियाओं को पकड़ने का कोई तरीका है? शायद यह भी समस्या को हल कर सकता है। वैसे, प्रतिक्रिया के लिए धन्यवाद। – spanport
अपडेट: मैं इस विशेष साइट पर पीडीएफ फाइलों के सबसे नज़दीकी यूआरएल की संरचना ढूंढकर और फिर उनसे रीडायरेक्ट करके इस साइट पर इसके चारों ओर एक रास्ता खोजना समाप्त कर दिया। चीयर्स! सेलेनियम के लिए – spanport