处理带有XML响应的GET请求
我现在是手动导出数据,但我需要把这个过程自动化。
使用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