2009-09-02 121 views
0

我完全新的Python,所以希望有人能幫助,如果我做的事情顯然是錯誤的。我試圖在vocabularies.referata.com上創建並運行一個簡單的pywikipedia bot,這是一個語義的mediawiki網站。我下載了pywikipedia發行,創造了家庭檔案:pywikipedia login.py socket.error:(10060,「操作超時」)

import config, family, urllib   # REQUIRED 

class Family(family.Family):   # REQUIRED 
    def __init__(self):    # REQUIRED 
     family.Family.__init__(self) # REQUIRED 
     self.name = 'explicator'  # REQUIRED; replace with actual name 

     self.langs = {    # REQUIRED 
      'en': 'vocabularies.referata.com', # Include one line for each wiki in family 
     } 

我創建了一個用戶,wikibot,並運行:

python generate_user_files.py 

按照說明上:

http://meta.wikimedia.org/wiki/Using_the_python_wikipediabot 

當我嘗試運行:

python login.py 

,我發現了以下錯誤:

C:\pywikipedia>python login.py 
Password for user wikibot on explicator:en: 
Logging in to explicator:en as wikibot 
Traceback (most recent call last): 
    File "login.py", line 376, in <module> 
    main() 
    File "login.py", line 372, in main 
    loginMan.login() 
    File "login.py", line 261, in login 
    cookiedata = self.getCookie(api) 
    File "login.py", line 178, in getCookie 
    response, data = self.site.postData(address, self.site.urlEncode(predata)) 
    File "C:\pywikipedia\wikipedia.py", line 4915, in postData 
    conn.endheaders() 
    File "C:\Python25\lib\httplib.py", line 860, in endheaders 
    self._send_output() 
    File "C:\Python25\lib\httplib.py", line 732, in _send_output 
    self.send(msg) 
    File "C:\Python25\lib\httplib.py", line 699, in send 
    self.connect() 
    File "C:\Python25\lib\httplib.py", line 683, in connect 
    raise socket.error, msg 
socket.error: (10060, 'Operation timed out') 

是他們的一些愚蠢/顯然,我需要檢查或做錯了什麼?我在防火牆後面,這會成爲問題嗎? (如果是的話,我需要採取什麼措施來解決它)。

感謝您的幫助 斯圖爾特

+0

http://meta.wikimedia.org/wiki/Using_the_python_wikipediabot#Bot_.26_Proxy – SilentGhost 2009-09-02 15:21:09

+0

嗨,對不起 - 應該提到 - 試過上面的編輯。無法讓它工作。是否所有的變化都被問到並且登錄失敗(正如它可能會說的那樣),但是當我嘗試'python test.py'時,我得到了 C:\ pywikipedia> python test.py 您尚未登錄到explicator:en 。 – stu73 2009-09-02 16:03:46

回答

0

我不熟悉瓦特/ pywikipedia = P,但問題是至少約連接,而不是蟒蛇:套接字連接失敗之初建立起來。

  • 是login.py L178中的帖子url,address,是否正確?任何錯字或錯誤配置?
  • 是URL訪問?您可以嘗試直接訪問瀏覽器中的網址,查看是否有任何http響應。如果服務器是可達的,你可以檢查其是否在聽某些端口上像80,由netstat -antnetstat -anptcp或相似。在Windows中,防火牆瓦特/默認設置可能會阻止通信,你可以看看是否有任何警告對話框,等待確認,或檢查的Fireware日誌。另外,您需要具有管理員權限才能使用端口80.
0

適用於我,對不起。我剛剛創建了一個帳戶,並使用了你的家庭檔案。它似乎在你身邊。

$ python login.py -v -v -family:explicator -lang:en 
Pywikipediabot [http] trunk/pywikipedia (r6858, May 08 2009, 15:23:29) 
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3] 
WARNING: Using -v -v on login.py might leak private data. When sharing, please double check your password is not readable and log out your bots session. 
Password for user NicDumZ on explicator:en: 
Logging in to explicator:en as NicDumZ 
self.site.postData(/w/index.php?title=Special:Userlogin&useskin=monobook&action=submit, wpSkipCookieCheck=1&wpPassword=XXXXX&wpDomain=&wpRemember=1&wpLoginattempt=Aanmelden%20%26%20Inschrijven&wpName=NicDumZ) 
302/Found 
Date: Thu, 03 Sep 2009 19:46:47 GMT 
Server: Apache 
Cache-Control: private, must-revalidate, max-age=0 
Expires: Thu, 01 Jan 1970 00:00:00 GMT 
Set-Cookie: referata_session=XXXXXXXXXXdab8c53151d27046d68473; path=/; HttpOnly 
Set-Cookie: referataUserID=4; expires=Sat, 03-Oct-2009 19:46:48 GMT; path=/; httponly 
Set-Cookie: referataUserName=NicDumZ; expires=Sat, 03-Oct-2009 19:46:48 GMT; path=/; httponly 
Set-Cookie: referatasession=XXXXXXXXXX270504613b1d26dfef82e6; expires=Sat, 03-Oct-2009 19:46:48 GMT; path=/; httponly 
Vary: Accept-Encoding,Cookie 
X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=referataToken;string-contains=referataLoggedOut;string-contains=referata_session 
Location: http://vocabularies.referata.com/wiki/Main_Page 
Content-Encoding: gzip 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=utf-8 


Should be logged in now 

你可以嘗試使用-v -v選項,以便我可以幫助您調試該問題嗎?請回複評論,以便我可以得到你的更新。