发布到网站时接收500 HTTP响应

时间:2014-07-28 18:01:35

标签: python http web-scraping

我正在尝试从需要发布到ajax脚本的网站中提取一些信息。

我正在尝试创建一个自动脚本但是我一直遇到HTTP 500错误。这与我从

中做的不同数据拉动相反
url = 'http://www.ise.com/ExchangeDataService.asmx/Get_ISE_Dividend_Volume_Data/'

paramList = ''
paramList += '"' + 'dtStartDate' + '":07/25/2014"'
paramList += ','
paramList += '"' + 'dtEndDate' + '":07/25/2014"';
paramList = '{' + paramList + '}';

response = requests.post(url, headers={
    'Content-Type': 'application/json; charset=UTF-8',
    'data': paramList,
    'dataType':'json'
    })

我想知道是否有人对正在发生的事情提出任何建议。这不是专有数据,因为它们允许您以excel格式手动下载它。

3 个答案:

答案 0 :(得分:3)

您生成的输入无效JSON。它看起来像这样:

{"dtStartDate":07/25/2014","dtEndDate":07/25/2014"}

如果仔细查看,您会在第一个"之前发现缺少07

这是您不应该尝试通过字符串连接生成JSON的众多原因之一。构建dict并使用json.dump,或者如果必须,使用多行字符串作为str.format%的模板。


另外,正如bruno desthuilliers指出的那样,你几乎肯定希望将JSON作为POST主体发送,而不是作为空data中的POST标头发送。以错误的方式做到这一点确实恰好与一些后端一起工作,但这只是偶然的,而且这肯定不是你应该依赖的东西。如果您正在与之通话的服务器不是其中一个后端,那么您将发送空字符串作为您的JSON数据,这同样无效。


那么,为什么这会给你一个500错误?可能是因为后端是一些凌乱的PHP代码,它没有无效JSON的错误处理程序,所以它只是没有关于出错的信息,所以服务器除了发送给你一个更好的事情之外什么都做不了通用500错误。

答案 1 :(得分:1)

如果这是您实际代码的复制/粘贴,'data'可能不应该是请求标头的一部分。作为旁注:您没有“发布到ajax脚本”,而是发布到URL。通过网站某些页面上的某些javascript的异步请求调用此URL的事实完全无关紧要。

答案 2 :(得分:0)

这听起来像服务器错误。那么你的帖子可能会因格式化而破坏他们的api。 或者他们的api可能会失败。

http://pcsupport.about.com/od/findbyerrormessage/a/500servererror.htm