我正在尝试使用Scrapy InitSpider登录Tor论坛但是我遇到了以下问题。
以下是处理登录的代码:
raise ValueError('No clickable element matching clickdata: %r' % (clickdata,))
ValueError: No clickable element matching clickdata: {'type': 'submit', 'class': 'button_submit', 'value': 'Login'}
我收到以下错误:
<div class="roundframe"><br class="clear">
<dl>
<dt>Username:</dt>
<dd>
<input type="text" name="user" size="20" value="" class="input_text">
</dd>
<dt>Password:</dt>
<dd>
<input type="password" name="passwrd" value="" size="20" class="input_password">
</dd>
</dl>
<dl>
<dt>Minutes to stay logged in:</dt>
<dd>
<input type="text" name="cookielength" size="4" maxlength="4" value="120" class="input_text">
</dd>
<dt>Always stay logged in:</dt>
<dd>
<input type="checkbox" name="cookieneverexp" class="input_check" onclick="this.form.cookielength.disabled = this.checked;">
</dd>
</dl>
<p>
<input type="submit" value="Login" class="button_submit">
</p>
<p class="smalltext">
<a href="http://thehub7xbw4dc5r2.onion/index.php?action=reminder">
Forgot your password?
</a>
</p>
<input type="hidden" name="d49bd52b3" value="f29d515eca1c0199840161f01d940973">
<input type="hidden" name="hash_passwrd" value="">
</div>
一旦我从clickdata列表中删除属性'value':'Login',蜘蛛就会选择页面上的第一个可点击元素,而不是要登录的元素,登录失败。
以下是页面登录部分的相关HTML:
{{1}}
有谁能告诉我如何解决这个问题?谢谢!
答案 0 :(得分:1)
我不知道为什么clickdata
无法正常工作(它的描述非常糟糕,可能只适用于name
属性)但此代码适用于我:
def login(self, response):
##Generates a login request
return scrapy.FormRequest.from_response(
response,
formid='frmLogin',
formdata = {
'user': 'username',
'passwrd': 'password',
'cookielength':'9999'
},
# clickdata = {
# 'type': 'submit',
# 'class': 'button_submit',
# 'value': 'Login'
# },
callback = self.check_login_response
)