2017-09-25 120 views
0

我想从网站自动读取数据,首先我需要填写一些字段,提交表单,然后读取出现的数据。我是新手,但我写了一个代码,显然不工作,结果是HTTP错误500.我在这里错过了什么?或者我如何解决这个问题?使用Python自动使用POST请求读取网站数据

此外,我很高兴使用BS4做到这一点,因为我需要建立在此代码上。

网站http://www.mlindex.ml.com/GISPublic/bin/SnapShot.asp

输入所需:指数北京时间= H0A0,基本货币= LOC,日期= 2017年9月22日

我检查的源代码,并通过js的形式去提交POST请求并相应地创建代码和负载:

import requests 

post_data = {'hdnDate':'1/1/2016', 'hdnAction':'SS', 'hdnSelCurr':'0,LOC', 'hdnCurrDesc':'USD', 'hdnSelTitle':'Hedged', 'txtSSCUSIP':'H0A0'} 

# POST some form-encoded data: 
post_response = requests.post(url='http://www.mlindex.ml.com/GISPublic/bin/Snapshot.asp', data=post_data) 
print post_response 

回答

1

您从有效负载d中缺少'cboSnapCurr': 0, 'cboSSHedge' : 1 ata,因为处理请求的服务器期待这些值。

post_data = { 'hdnDate': '2016年1月1日', 'hdnAction': 'SS', 'hdnSelCurr': '0,LOC', 'hdnCurrDesc': 'USD', 'hdnSelTitle' :'Hedged','txtSSCUSIP':'H0A0','cboSnapCurr':0,'cboSSHedge':1}

+0

谢谢,这给了我认为意味着“确定”的HTTP响应200。如何获得实际的HTML响应,以便我可以读取from的输出文本? – dsauce

+0

@dsauce'post_response.text' – Zroq

+0

再次感谢!我可以在几分钟内将答案标记为已接受。同时,你能告诉我如何才能得到解析的文本,而不是整个HTML? – dsauce