Python mechanize复选框控件不工作
我试图删除一个维基网站的2000多个垃圾邮件用户,所以我使用了mechanize和user merge and delete(mediawiki扩展)。我遇到的问题是,对于删除,mechanize必须勾选一个复选框,这似乎不起作用:Python mechanize复选框控件不工作,python,checkbox,mechanize,spam-prevention,mediawiki-extensions,Python,Checkbox,Mechanize,Spam Prevention,Mediawiki Extensions,我试图删除一个维基网站的2000多个垃圾邮件用户,所以我使用了mechanize和user merge and delete(mediawiki扩展)。我遇到的问题是,对于删除,mechanize必须勾选一个复选框,这似乎不起作用: fi = open('users') for user in fi.readlines(): response3 = br.open('url') br.form = list(br.forms())[0] br['olduser']
fi = open('users')
for user in fi.readlines():
response3 = br.open('url')
br.form = list(br.forms())[0]
br['olduser'] = user
br['newuser'] = 'Spambot'
br.form.find_control(name='deleteuser').items[0].selected = True
response4 = br.submit()
print response4.read(), '\njust deleted ', user
fi.close()
我在stackoverflow和其他网站上看过很多帖子,都是这么说的
br.form.find_control(name='deleteuser').items[0].selected = True
我应该这样做。
我做错了什么?这确实不是一个解决方案,但应该可以帮助您调试并查看是否做错了什么。下面只是打印您试图使用Mechanize填充的表单上的所有控件
for control in form[0].controls:
print control
如果您正确选择了复选框,则应如下所示:
<CheckboxControl(deleteorwhatever=[*on])>
我希望这有助于您朝着正确的方向前进。这确实不是一个解决方案,但应该有助于您进行调试,并查看您是否做错了什么。下面只是打印您试图使用Mechanize填充的表单上的所有控件
for control in form[0].controls:
print control
如果您正确选择了复选框,则应如下所示:
<CheckboxControl(deleteorwhatever=[*on])>
我希望这能帮你找到正确的方向。很晚了,但这对我很有效
br.find_control("comment_status").items[0].selected = false
我没有指定(name=“comment\u status”),只在引号中指定了它的名称 很晚了,但这对我很有效
br.find_control("comment_status").items[0].selected = false
我没有指定(name=“comment\u status”),只在引号中指定了它的名称 你能给出网页的URL或html吗?你看到了什么行为?您是否尝试过使用RobustFactory?html与此无关,它是指向mediawiki扩展形式(specialpage:usermergeanddelete)的链接。循环不会引发异常,它会像工作一样完成。它实际上正在工作(填写表单导致SQL数据库中的用户引用合并),但由CheckboxControl控制的传统操作没有发生(从数据库中删除合并的用户),这是脚本的主要目的。您执行的命令是正确的,因此,唯一有帮助的是表单的实际html。如果您不提供页面或至少不提供页面的工作方式(是否使用JavaScript或类似的方法生成复选框按钮),那么您将不会得到任何帮助。您可以给出页面的URL或html吗?您看到了什么行为?您是否尝试过使用RobustFactory?html与此无关,它是指向mediawiki扩展形式(specialpage:usermergeanddelete)的链接。循环不会引发异常,它会像工作一样完成。它实际上正在工作(填写表单导致SQL数据库中的用户引用合并),但由CheckboxControl控制的传统操作没有发生(从数据库中删除合并的用户),这是脚本的主要目的。您执行的命令是正确的,因此,唯一有帮助的是表单的实际html。如果您不提供页面或至少不提供页面的工作方式(是否使用JavaScript或类似的方法来生成复选框按钮),那么您将得不到任何帮助。