0

ウィキペディアのスクリプトを作成しましたが、コンピューターでは正常に動作しますが、Web ホスト (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

デバッグを追加することから始めます。ウィキペディアに送信している出力と、それが返す結果をキャプチャできますか? そこにはおそらく、失敗した理由を確認するために抽出できる情報がいくつか含まれています。

[編集]再デバッグ - あなたが提供した小さなスニペットを考えると、アドバイスを与えるのは難しいです. 1 つのファイルに 3.5k 行を超えるという事実は、かなり効率の悪いコーディングが含まれているか、問題が特にうまく分解されていないことを示唆しています。これにより、デバッグがよりトリッキーになる可能性があります。

そうは言っても、上記のデバッグで言及されている .put() は、ほぼ確実にサーバーにリクエストを送信しています。これらのリクエストまたはリクエストの一部を印刷することから始めることができます。どのリクエストが送信されているかをつなぎ合わせてから、それらのリクエストだけを実行し、python の print コマンドを使用して出力を記録してみてください。

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

... my_put_request は、送信するデータのビットです。

[編集 2]これがあなたが使用している pywikipedia ボット スクリプトであることがわかりました。ボットに関するウィキペディアの記事には、アクセスの問題であるという uggedals の提案をサポートするアクセス許可に関するいくつかのポイントが記載されています。ウィキペディアがドリームホストの IP を認識し、他の誰かが過去に何か悪いことをしようとして、何らかの方法でブロックされた可能性は十分にあります。

于 2009-05-26T12:30:42.250 に答える