我正在使用带有Eclipse PyDev的python 2.7编写一个简单的屏幕抓取脚本。从Eclipse中运行或调试时,一切正常。但是,当我从命令行运行我的程序时,服务器始终返回Response 500错误代码。我已经尝试从命令行运行脚本和编译版本但得到相同的结果 - 响应500.我也尝试了一些随意的事情,如添加延迟,重复尝试等等但我不知道Eclipse是什么这样做与python运行命令行不同。
首先,如果我再遇到这样的事情,哪里是开始挖掘的好地方?
第二,关于如何从命令行开始工作的任何想法?
以下代码段供参考
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 :(得分:0)
得到了某人的回答。感谢reddit的用户Justinsaccount。
首先,我使用批处理文件来保存输入,而不是直接使用命令行。 其次,当从程序内部打印出参数然后将eclipse版本与.bat版本进行比较时,.bat版本会缩短几个字符,这就是赠送。
其中一个参数是一个具有空格字符的网址:http://somewhere.com/some page
。
在严格的网址中,这会变为:http://somewhere.com/some%20page
从命令行http://somewhere.com/some%20page
运行时
工作得很好。但是,在批处理文件中,%需要转义,所以我得到的是:http://somewhere.com/some0page
这就是服务器通过错误的原因 - 该页面不存在。我需要做的是逃避%字符:http://somewhere.com/some%%20page
。在那之后,事情变得很好。