javascript格式的Https表单post,带有scrapy

javascript格式的Https表单post,带有scrapy,javascript,python,html,scrapy,Javascript,Python,Html,Scrapy,我正在使用scrapy,我想将参数发布到以下https登录表单: <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="r

我正在使用scrapy,我想将参数发布到以下https登录表单:

<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>

我是否在帖子中遗漏了任何参数,或者我是否做了其他错误的事情?非常感谢您的帮助。

如果您使用硒,效果会更好。为了防止伪造请求和机器人程序,通常会有一些隐藏的元素,其中包含令牌和CSRF字符串,这些元素是不容易伪造的。 使用selenium,您可以坐在驾驶员座椅上控制脚本的执行或触发事件

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)