1

我正在尝试删除 2000 多个维基站点的垃圾邮件用户,因此我使用了机械化和用户合并和删除(mediawiki 扩展)。我遇到的问题是,要删除,机械化必须勾选一个复选框,这似乎不起作用:

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

应该这样做。我究竟做错了什么?

4

2 回答 2

1

这确实不是一个解决方案,但应该可以帮助您调试并查看您是否做错了什么。以下仅打印您尝试使用 Mechanize 填写的表单上的所有控件。

for control in form[0].controls:
    print control

如果您正确选择了复选框,它应该如下所示:

<CheckboxControl(deleteorwhatever=[*on])>

我希望这可以帮助您朝着正确的方向前进。

于 2013-05-02T09:17:24.417 回答
0

晚了,但这对我有用......

br.find_control("comment_status").items[0].selected = false

我没有指定 (name="comment_status") 而是仅在引号中指定它的名称。

于 2016-02-04T14:37:52.750 回答