Python Screen Scraper在Eclipse中运行,但不在命令行中运行

时间:2014-01-22 23:26:18

标签: eclipse python-2.7 command-line screen-scraping

我正在使用带有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()

1 个答案:

答案 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。在那之后,事情变得很好。