2015-12-13 95 views
0

我使用scrapy,我想POST參數以下HTTPS登錄表單:的Https形式後在JavaScript形式scrapy

<form id="loginForm" name="loginForm" action="/ax/login/loginNN.html" onsubmit="loginWidget.logIn(); loginWidget=null;" onkeypress="checkForReturn(this, event)" method="post"> 
    <input type="hidden" name="referer" value="/ax/web/nn/index.html" /> 
    <input type="hidden" name="encryption" value="1" /> 

    <div class="fakePasswordContainer"> 
       <input class="js-clear_field" tabindex="-1" name="fake_password" type="password"> 
    </div> 

    <div class="input-group input-group-custom"> 
     <span class="input-group-addon"><span class="icon icon_user"></span></span> 
     <input type="text" class="form-control lowercase" placeholder="Username" id="input1" name="8d144c359a21a05e83e9a1b56ec6a8e7" type="text" autocomplete="off" > 
    </div> 

    <div class="input-group input-group-custom"> 
     <span class="input-group-addon"><span class="icon icon_key"></span></span> 
     <input id="fakeholder" type="text" class="form-control" placeholder="Password" autocomplete="off" style="display:none;"> 
     <input id="pContent" type="password" class="form-control" placeholder="Password" autocomplete="off"> 
     <input id="pContHidden" name="420d27b4073e303b678e19767daa0f38" type="hidden" autocomplete="off" /> 
    </div> 

    <div class="row multiple-button-container"> 

      <div class="col-sm-7 align-left"> 
       <p class="btn-inline"><a href="NewPsw.html?a3=NNSE&a4=sv&usePhrase=0">Password forgotten?</a></p> 
      </div> 

     <div class="col-sm-5"> 
      <button id="login_btn" type="button" class="btn btn-primary btn-custom btn-block cta" onclick="if (loginWidget != null) return loginWidget.logIn()">Log in</button> 
     </div> 
    </div> 
</form> 

我沒有這樣做,這是我的蜘蛛解析器:

def parse(self, response): 
    sel = Selector(response) 
    login_parameters = sel.xpath("//div/div/div/div/div/div/form[@id='loginForm']/div") 
    user_param = "" 
    pass_param = "" 
    for parameter in login_parameters: 
     param1 = parameter.xpath('input[@id="input1"]/@name').extract() 
     if param1: 
      user_param = param1[0] 
     param2 = parameter.xpath('input[@id="pContHidden"]/@name').extract() 
     if param2: 
      pass_param = param2[0] 
    form_data = {u'referer':u'/ax/login/startSE.html?cmpi=start-login',u'encryption': u'1',u'fake_password':,user_param:u'123456',,pass_param : u'Abcdefg'} 
    url = u'https://www.ordnet.se/ax/login/loginNN.html' 
    print form_data 
    yield FormRequest(url, callback=self.parse2, formdata=form_data) 

我是否缺少該文章中的任何參數或者我是否做了其他不正確的事?任何幫助將不勝感激。

回答

0

如果你用硒做它會更好。爲了防止虛假的請求和機器人,通常會有隱藏的元素帶有令牌和CSRF字符串,這些都不容易僞造。 有了硒,您可以坐在司機座位上控制腳本的執行或觸發事件。