0

我已经为 Wikipedia 编写了一个脚本,它在我的计算机上运行良好,但是当我将它上传到我的网络主机(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',)

关于为什么它不起作用的任何想法?

谢谢,非常感谢!

4

2 回答 2

1

可能是您的主机 (Dreamhost) 被阻止,而不是您的用户。

于 2009-05-26T11:38:47.503 回答
0

我会先添加一些调试。你能捕捉到你发送到维基百科的输出和它返回的结果吗?那里可能有更多信息,您可以提取这些信息以查看它失败的原因。

[编辑]重新调试-鉴于您提供的小片段,很难给出建议。您在单个文件中有超过 3.5k 行的事实表明其中存在一些相当低效的编码,或者问题没有特别好地分解......这可能会使调试更加棘手。

话虽如此,上面调试中提到的 .put() 几乎可以肯定是向服务器发送请求。您可以从打印出这些请求或请求的位开始。尝试拼凑正在发送的请求,然后尝试仅执行这些请求并使用 python 的 print 命令记录输出:

print "Sending '%s' to server%(my_put_request)

...其中 my_put_request 是您发送的数据位。

[Edit2]我刚刚发现这是您正在使用的 pywikipedia 机器人脚本。关于机器人的维基百科文章提到了一些关于权限的观点,这将支持 uggedals 的建议,即这是一个访问问题。维基百科很可能识别出 Dreamhosts 的 IP,并且其他人过去曾尝试过做坏事,导致他们以某种方式被阻止。

于 2009-05-26T12:30:42.250 回答