2012-06-26 17 views
7

मैं स्केपर के लिए नया हूं और अच्छी ऑनलाइन समीक्षाओं के कारण इसे आजमाने का फैसला किया। मैं स्केपर के साथ एक वेबसाइट में लॉगिन करने की कोशिश कर रहा हूँ। मैंने सेलेनियम के साथ आवश्यक कुकीज़ एकत्र करके और मशीनीकरण में जोड़कर सेलेनियम और मशीनीकरण के संयोजन के साथ सफलतापूर्वक लॉग इन किया है। अब मैं स्केरेपी और सेलेनियम के साथ कुछ ऐसा करने की कोशिश कर रहा हूं लेकिन काम करने के लिए कुछ भी नहीं लग रहा है। मैं वास्तव में यह भी बता सकता हूं कि कुछ भी काम कर रहा है या नहीं। क्या कोई मेरी मदद कर सकता हैं। नीचे मैंने क्या शुरू किया है। मुझे कुकीज़ को स्क्रैप के साथ स्थानांतरित करने की भी आवश्यकता नहीं है, लेकिन मैं यह नहीं बता सकता कि क्या चीज़ वास्तव में लॉग इन करती है या नहीं। धन्यवादकुकीज़ के साथ स्केपर प्रमाणीकरण लॉगिन

from scrapy.spider import BaseSpider 
from scrapy.http import Response,FormRequest,Request 
from scrapy.selector import HtmlXPathSelector 
from selenium import webdriver 

class MySpider(BaseSpider): 
    name = 'MySpider' 
    start_urls = ['http://my_domain.com/'] 

    def get_cookies(self): 
     driver = webdriver.Firefox() 
     driver.implicitly_wait(30) 
     base_url = "http://www.my_domain.com/" 
     driver.get(base_url) 
     driver.find_element_by_name("USER").clear() 
     driver.find_element_by_name("USER").send_keys("my_username") 
     driver.find_element_by_name("PASSWORD").clear() 
     driver.find_element_by_name("PASSWORD").send_keys("my_password") 
     driver.find_element_by_name("submit").click() 
     cookies = driver.get_cookies() 
     driver.close() 
     return cookies 

    def parse(self, response,my_cookies=get_cookies): 
     return Request(url="http://my_domain.com/", 
      cookies=my_cookies, 
      callback=self.login) 

    def login(self,response): 
     return [FormRequest.from_response(response, 
      formname='login_form', 
      formdata={'USER': 'my_username', 'PASSWORD': 'my_password'}, 
      callback=self.after_login)] 

    def after_login(self, response): 
     hxs = HtmlXPathSelector(response) 
     print hxs.select('/html/head/title').extract() 

उत्तर

10

आपका प्रश्न डिबग मुद्दे के अधिक है, इसलिए मेरा उत्तर सिर्फ अपने सवाल है, नहीं सटीक जवाब पर कुछ नोट होगा।

def parse(self, response,my_cookies=get_cookies): 
    return Request(url="http://my_domain.com/", 
     cookies=my_cookies, 
     callback=self.login) 

my_cookies=get_cookies - यदि आप एक समारोह यहां परिणाम यह रिटर्न बताए जाते हैं, नहीं। मुझे लगता है कि आपको पैरामीटर के रूप में यहां किसी भी फ़ंक्शन को पास करने की आवश्यकता नहीं है। यह होना चाहिए: Request के लिए

def parse(self, response): 
    return Request(url="http://my_domain.com/", 
     cookies=self.get_cookies(), 
     callback=self.login) 

cookies तर्क एक dict होना चाहिए - यह सत्यापित करें कि यह वास्तव में एक dict है।

मैं वास्तव में यह भी बता सकता हूं कि कुछ भी काम कर रहा है या नहीं।

निष्पादन का पालन करने के लिए कॉलबैक में कुछ प्रिंट रखें।

+1

आपके द्वारा नोट किए गए मुद्दों को ठीक करने के बाद मैं सफलतापूर्वक लॉगिन करने में सक्षम था! नोट: सेलेनियम लौटाई गई कुकीज़ शब्दकोश की एक सूची थी जिसे एक एकल शब्दकोश में बदला जाना था। सहायता के लिए बहुत - बहुत धन्यवाद। – JonDog

+0

क्षमा करें, मैं stackoverflow के लिए नया हूँ। मैं वोट थक गया लेकिन यह कहता है कि वोट देने से पहले मुझे 15 प्रतिष्ठा चाहिए। मुझे उत्तर के रूप में चिह्नित करने के लिए कोई अन्य तरीका नहीं दिख रहा है .. अद्यतन - ठीक है, मैंने चेक मार्क पर क्लिक किया। मुझे लगता है यही है। – JonDog

+0

@ जॉनडॉग..क्या आप कृपया एक फॉर्म से कुकी रूपांतरण को अन्य – Amistad

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

  • कोई संबंधित समस्या नहीं^_^