【问题标题】:Reading website data automatically with POST requests using Python使用 Python 通过 POST 请求自动读取网站数据
【发布时间】:2017-09-25 20:02:33
【问题描述】:

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

另外,我也很高兴使用 BS4 来执行此操作,因为我需要在此代码的基础上进行构建。

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

需要输入:指数代码 = H0A0,基准货币 = LOC,日期 = 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

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案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}

    【讨论】:

    • 谢谢,这给了 HTTP 响应 200,我相信这意味着“OK”。如何获得实际的 HTML 响应,以便我可以从 from 读取输出文本?
    • @dsauce post_response.text
    • 再次感谢!我将能够在几分钟内将答案标记为已接受。同时,您能告诉我如何获取解析后的文本而不是整个 html 吗?
    • 将文本转换为 BeautifulSoup 并解析每个表格行以获得您想要的数据。使用this 作为参考。
    猜你喜欢
    • 2017-04-09
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    相关资源
    最近更新 更多