使用Python自动使用POST请求读取网站数据

时间:2017-09-25 20:02:34

标签: python web-scraping beautifulsoup

我正在尝试自动从网站读取数据,首先我需要填写一些字段,提交表单然后读取显示的数据。我是新手,但我写了一个显然不起作用的代码,结果是HTTP Error 500.我在这里缺少什么?或者我该如何解决这个问题?

此外,我很高兴使用BS4这样做,因为我需要在此代码的基础上进行构建。

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

需要输入:Index Ticker = H0A0,Base Curr = LOC,Date = 09/22/2017

我检查了源代码并浏览了提交POST请求的js表单,并相应地创建了代码和有效负载:

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 个答案:

答案 0 :(得分:1)

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

  

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