处理带有XML响应的GET请求

1 投票
1 回答
718 浏览
提问于 2025-04-18 07:27

我现在是手动导出数据,但我需要把这个过程自动化。

使用Fiddler时,发生的操作步骤如下。

我该如何用wget、cURL、Python或PERL来自动化这个过程呢?

日期和时间是以纪元时间(epoch standard)表示的。

首先是一个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>

1 个回答

1

对于Python,我建议使用requests库来发送GET请求并获取响应数据,然后用像ElementTree这样的XML解析器来解析XML数据(可以参考这个链接:https://docs.python.org/2/library/xml.etree.elementtree.html)。

requests库可以直接处理JSON数据,但处理XML数据时需要搭配XML解析器使用。

关于URL中的时间戳,可以看看datetime类,特别是strftime方法,它可以帮助你以特定的格式来处理时间戳。如果你需要动态计算时间,比如每小时增加一次,可以使用timedelta方法。

如果你想获取纯粹的epoch时间,可以使用gmtime()localtime()函数。

编辑:回应提问者的评论:

requests的文档和示例在这里:http://docs.python-requests.org/en/latest/

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

datetime的文档和示例在这里:https://docs.python.org/2/library/datetime.html

撰写回答