2014-01-22 120 views
0

我正在用Eclipse PyDev使用python 2.7編寫一個簡單的屏幕抓取腳本。在Eclipse中運行或調試時,一切正常。但是,當我從命令行運行我的程序時,服務器總是返回一個Response 500錯誤代碼。我試過從命令行運行腳本和編譯版本,但得到相同的結果 - 響應500.我也嘗試過一些任意的東西,如添加延遲,重複嘗試等,但我不知道什麼Eclipse這樣做是不同於蟒蛇跑命令行。Python Screen Scraper在Eclipse中工作,但不能從命令行工作

首先,如果再次遇到類似情況,哪裏可以開始挖掘?

其次,如何從命令行得到這個工作的任何想法?下面參考

from requests import Request, Session 

    content_type = 'application/x-www-form-urlencoded' 
    headers2 = {"User-Agent" : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)', 
       "Content-Type" : content_type, 
       "Referer" : url 
       } 
    url = loginPage 
    payload = {"email" : username, "password" : password} 
    req = Request ('POST', url, data=payload, headers=headers2) 
    prepped = req.prepare() 
    s = Session() 

    resp = s.send(prepped) 
    print resp # Response 200 (good) from both within Eclipse and from cmd 

    resp = s.get(targetPage) 
    print resp # Response 200 (good) from Eclipse, Response 500 (generic web error) from cmd 

    s.get (logOutPage) 
    s.close() 

回答

0

代碼片斷得到別人的答案。感謝從reddit用戶Justinsaccount。

首先,我使用批處理文件來保存輸入,而不是直接使用命令行。其次,當從程序內部打印出參數,然後比較eclipse版本和.bat版本時,.bat版本只是簡短的幾個字符而已。

其中一個參數是具有空格字符的網址:http://somewhere.com/some page

在嚴格的URL,這變成:http://somewhere.com/some%20page

在命令行http://somewhere.com/some%20page 作品就好運行。然而,在批處理文件中,%需要被轉義,所以我得到的是:http://somewhere.com/some0page 這就是服務器通過一個錯誤 - 該頁面不存在的原因。我需要做的是跳過%字符:http://somewhere.com/some%%20page。之後,改變事情工作得很好。

相關問題