2011-11-29 2 views
7

में वेब-स्क्रैपिंग टूल के माध्यम से किसी वेबसाइट पर लॉग इन करें मैं वेब-स्क्रैपिंग प्रोजेक्ट के लिए पायथन में सेलेनियम वेबड्राइवर का उपयोग कर रहा हूं।पायथन

मैं लॉगिन विवरण दर्ज करके लॉगिन करना चाहता हूं और फिर सबमिट बटन पर क्लिक करना चाहता हूं।

मैं उपयोगकर्ता नाम और पासवर्ड दर्ज करने में सक्षम हूं। लेकिन मैं सबमिट बटन को माउसक्लिक करने में सक्षम नहीं हूं।

"सबमिट" बटन <input> प्रकार का है।

<input type="image" src="/images/buttons/loginnow.gif" tabindex="3"> 

यहां पाइथन कोड है जहां मैं माउस पर क्लिक करने की कोशिश कर रहा हूं।

AttributeError: 'WebDriver' object has no attribute 'click'

किसी भी विचार कैसे पायथन में एक वेबसाइट पर लॉगइन करने के लिए यह या किसी अन्य वैकल्पिक समाधान ठीक करने के लिए:

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']") 
driver.click(submitButton) 

मैं निम्नलिखित त्रुटि मिलती है।

धन्यवाद

उत्तर

4

आपको तत्व के क्लिक फ़ंक्शन को कॉल करने की आवश्यकता है, ड्राइवर नहीं।

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']") 
submitButton.click() 
9

मैं mechanize का उपयोग कर सौभाग्य था। यह उपयोग करने के लिए बहुत सरल और सरल है।

from BeautifulSoup import BeautifulSoup 
from tidylib import tidy_document 

import mechanize 
import cookielib 

if __name__ == '__main__': 
    browser = mechanize.Browser() 

    cookiejar = cookielib.LWPCookieJar() 
    browser.set_cookiejar(cookiejar) 

    browser.set_handle_equiv(True) 
    browser.set_handle_redirect(True) 
    browser.set_handle_referer(True) 
    browser.set_handle_robots(False) 

    browser.open('https://www.example.com/') 

    browser.select_form(name = 'loginform') 
    browser['username'] = 'foo' 
    browser['password'] = 'bar' 

    browser.submit() 

    browser.open(browser.click_link(text = 'Link text')) 

    soup = BeautifulSoup(tidy_document(browser.response().read())[0]) 

आप छवि पर क्लिक करने, वास्तव में जरूरत नहीं है:

यहाँ एक स्क्रिप्ट मैंने बनाया का एक छीन नीचे संस्करण है। आपको बस सभी उपयुक्त फॉर्म विवरण भरने की आवश्यकता है और केवल submit() इसे भरना होगा।

इसके अलावा, यदि आप कुछ भी पार्स नहीं कर रहे हैं, तो बस BeautifulSoup और tidylib निर्भरताओं से छुटकारा पाएं।

+0

शपथ .. यह सच में अद्भुत है यह पता चला है के रूप में, सेलेनियम भी 'प्रस्तुत किया है()' जो मुझे – Kiran

+0

के लिए काम किया भी बेहतर है कि अपनी स्क्रिप्ट को फिर से लिखने: पी – Blender