【问题标题】:Processing GET requests with XML responses使用 XML 响应处理 GET 请求
【发布时间】:2014-05-23 23:43:15
【问题描述】:

我目前手动导出数据,但需要自动化该过程。

使用 Fiddler 发生的一组动作如下。

我如何在下面使用 wget、cURL、python 或 PERL 实现自动化?

日期和时间采用纪元标准。

GET 请求

Archive.cgi?cmd=check_dst&start_time=1400889660&end_time=1400975940&cam=255&username=QkFCWVo=&rnd=6798

它返回以下 XML 响应

<result>4</result>

下一个请求是

Archive.cgi?cmd=query&cam=255&start_time=1400889660&end_time=1400975940&dst=2&level=0&username=QkFCWVo=&rnd=6825

使用 XML 响应

<Archive_Query><result>1</result><Size>10100</Size><st>0x537fe086</st><et>0x53808133</et><Stream_num>0</Stream_num></Archive_Query>

接下来是下一个 GET 请求

Archive.cgi?cmd=register_stream&login_id=201442411242611&rnd=1810

返回以下 XML 响应

e6b1a0dc54334bef07e695f5b5640c3a

随后是最终的 GET 请求

Archive.cgi?cmd=archive_ctrl&action=cancel&stream_id=e6b1a0dc54334bef07e695f5b5640c3a&username=QkFCWVo=&rnd=675

返回以下 XML 输出

<result>1</result>

【问题讨论】:

    标签: python xml curl get wget


    【解决方案1】:

    对于Python,我建议结合requests 库来执行GET 并获取响应数据,然后使用XML Parser 如ElementTree (https://docs.python.org/2/library/xml.etree.elementtree.html) 来解析XML。

    requests 原生处理 JSON 数据,但对于 XML 数据需要与 XML parser 组合。

    对于 URL 中的时间戳方面,请查看 datetime 类,特别是用于以特定方式格式化时间戳的 strftime 方法,如果您需要以增量方式动态计算时间(例如,每小时或其他时间) ,timedelta 方法。

    对于纯epoch 时间,请查看gmtime()localtime() 函数。

    编辑:回应 OP 的评论:

    requests 文档。有例子,在这里:http://docs.python-requests.org/en/latest/

    上面的链接 (https://docs.python.org/2/library/xml.etree.elementtree.html) 中也有 ElementTree 的示例。

    datetime doc,示例:https://docs.python.org/2/library/datetime.html

    【讨论】:

    • 不是 python 开发人员,但可以使用示例。有没有我可以效仿的例子?
    • 添加了更多上面有例子的链接。
    猜你喜欢
    • 2021-12-02
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多