我为维基百科写了一个脚本&它在我的计算机上工作正常,但是当我将它上传到我的网站主机(Dreamhost)时,它无法正常工作。说我试图登录的用户被阻止 - 这不是真的,它适用于我的电脑和电脑;我没有被阻止。 这是我得到的确切错误消息 -
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/home/tris1601/thewikipediaforum.com/pywikipedia/wikitest.py
35 site = wikipedia.getSite()
36 newpage = wikipedia.Page(site, u"User:Dottydotdot/test")
37 newpage.put(text + "<br><br>'''Imported from [http://en.wikiquote.org '''Wikiquote'''] by [[User:DottyQuoteBot|'''DottyQuoteBot''']]", u"Testing")
38
39 wikipedia.stopme()
newpage = Page{[[User:Dottydotdot/test]]}, newpage.put = <bound method Page.put of Page{[[User:Dottydotdot/test]]}>, text = u'You have so many things in the background that y... could possibly work?" <p> [[Ward Cunningham]] \n'
/home/tris1601/thewikipediaforum.com/pywikipedia/wikipedia.py in put(self=Page{[[User:Dottydotdot/test]]}, newtext=u"You have so many things in the background that y...''] by [[User:DottyQuoteBot|'''DottyQuoteBot''']]", comment=u'Testing', watchArticle=None, minorEdit=True, force=False, sysop=False, botflag=True)
1380
1381 # Check blocks
1382 self.site().checkBlocks(sysop = sysop)
1383
1384 # Determine if we are allowed to edit
self = Page{[[User:Dottydotdot/test]]}, self.site = <bound method Page.site of Page{[[User:Dottydotdot/test]]}>, ).checkBlocks undefined, sysop = False
/home/tris1601/thewikipediaforum.com/pywikipedia/wikipedia.py in checkBlocks(self=wikipedia:en, sysop=False)
4457 if self._isBlocked[index]:
4458 # User blocked
4459 raise UserBlocked('User is blocked in site %s' % self)
4460
4461 def isBlocked(self, sysop = False):
global UserBlocked = <class wikipedia.UserBlocked>, self = wikipedia:en
UserBlocked: User is blocked in site wikipedia:en
args = ('User is blocked in site wikipedia:en',)
关于它为什么不起作用的任何想法?
谢谢,非常感谢!
答案 0 :(得分:1)
可能是您的主机(Dreamhost)被阻止,而不是您的用户。
答案 1 :(得分:0)
我首先添加一些调试。您是否可以捕获您发送给维基百科的输出以及它重新生成的结果?可能会提供更多信息,您可以提取这些信息以了解它失败的原因。
[编辑] r.e。调试 - 鉴于您提供的小片段,很难给出建议。事实上,你在一个文件中有超过3.5k的行,这表明在那里有一些相当低效的编码,或者问题没有被特别好地分解......这可能会使调试变得更加棘手。
话虽如此,上面调试中提到的.put()几乎肯定会向服务器发送请求。您可以从打印出请求或请求的位开始。尝试将正在发送的请求拼凑在一起,然后尝试使用python的print命令执行这些请求并记录输出:
print "Sending '%s' to server%(my_put_request)
...其中my_put_request是您要发送的数据位。
[Edit2] 我刚发现这是你正在使用的pywikipedia bot脚本。关于机器人mentions some points on permissions的维基百科文章将支持uggedals建议它是一个访问问题。 wikipedia很有可能识别出dreamhosts IP,并且其他人在过去尝试过做坏事,导致它们以某种方式被阻止。