2011-02-17 18 views
10

मैकेनाइज करें, इसलिए, मैंने मैकेनाइजेशन के साथ शुरुआत की, और जाहिर है कि मैंने जिस चीज को आजमाया है वह एक बंदर-राइनो-स्तरीय उच्च जावास्क्रिप्ट नेविगेटेड साइट है।सबमिट बटन के उपयोग के बिना सबमिट करें,

अब जिस चीज पर मैं फंस गया हूं वह फॉर्म जमा कर रहा है।

आम तौर पर मैकेनाइजेशन अंतर्निहित सबमिट() फ़ंक्शन का उपयोग करके सबमिट करता हूं।

import mechanize 

browser = mechanize.Browser() 
browser.select_form(name = 'foo') 
browser.form['bar'] = 'baz' 
browser.submit() 

इस तरह यह सबमिट किए गए बटन का उपयोग HTML फॉर्म में उपलब्ध होगा।

हालांकि, जिस साइट पर मैं फंस गया हूं वह होना चाहिए जो HTML सबमिट बटन का उपयोग नहीं करता ... नहीं, वे जावास्क्रिप्ट गुरु होने की कोशिश कर रहे हैं, और जावास्क्रिप्ट के माध्यम से सबमिट करते हैं।

सामान्य सबमिट() इस के साथ काम नहीं कर रहा है।

तो ... क्या इस के आसपास जाने का कोई तरीका है?

किसी भी मदद की सराहना की जाती है। बहुत धन्यवाद!

- [संपादित करें] -

जावास्क्रिप्ट समारोह मैं अटक कर रहा हूँ पर:

function foo(bar, baz) { 
    var qux = document.forms["qux"]; 

    qux.bar.value = bar.split("$").join(":"); 
qux.baz.value = baz; 
qux.submit(); 
} 

क्या मैं अजगर में किया था (और क्या काम नहीं करता है):

def foo(browser, bar, baz): 
    qux = browser.select_form("qux") 

    browser.form[bar] = ":".join(bar.split("$")) 
    browser.form[baz] = baz 
    browser.submit() 

उत्तर

11

तीन तरीके:

यदि विधि POST/GET विधि का उपयोग करके फ़ॉर्म सबमिट किया गया है तो पहली विधि बेहतर है, अन्यथा आप एच दूसरी और तीसरी विधि का सहारा लेना।

  1. मैन्युअल रूप से फॉर्म सबमिट करना और पोस्ट/जीईटी अनुरोधों के लिए जांचें, उनके पैरामीटर और पोस्ट यूआरएल फॉर्म जमा करने के लिए आवश्यक है। शीर्षलेखों की जांच के लिए लोकप्रिय उपकरण लाइव HTTP शीर्षलेख एक्सटेंशन और फ़ायरफ़ॉक्स के लिए फ़ायरबग एक्सटेंशन, और क्रोम के लिए डेवलपर टूल एक्सटेंशन हैं। पोस्ट/GET विधि के उपयोग का एक उदाहरण:

    import mechanize 
    import urllib 
    
    browser = mechanize.Browser() 
    #These are the parameters you've got from checking with the aforementioned tools 
    parameters = {'parameter1' : 'your content', 
           'parameter2' : 'a constant value', 
           'parameter3' : 'unique characters you might need to extract from the page' 
          } 
    #Encode the parameters 
    data = urllib.urlencode(parameters) 
    #Submit the form (POST request). You get the post_url and the request type(POST/GET) the same way with the parameters. 
    browser.open(post_url,data) 
    #Submit the form (GET request) 
    browser.open(post_url + '%s' % data) 
    
  2. जावास्क्रिप्ट पुनर्लेखन और अजगर में निष्पादित

    । Spidermonkey देखें।

  3. एक पूर्ण ब्राउज़र का अनुकरण करें। सेलेनियम और विंडमिल देखें।

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