如何读取单独的cUrl块?
有没有办法从一个网址下载数据,并把每一部分数据单独保存到不同的文件里,以便进行分析呢?
我遇到一个问题,我觉得服务器把json输出的最后部分切掉了,但我们获取响应的公司却说“没有,没切掉”。
当我在终端使用curl命令时,它在我认为是一个数据块的地方停止了,按下回车键又返回了更多的数据,这个一定是一个数据块吗?
如果不是的话,我想找一个脚本,可以把每个数据块保存到文件里。
2 个回答
2
我不知道怎么让curl做到你想要的(我甚至觉得用BSD套接字API可能不行),但我觉得我可以帮你解决问题。
我认为你想要的是一个像Wireshark这样的抓包工具,这样你就可以查看数据包的内容,确切地知道在网络上传输时发生了什么。
1
根据 pycurl.Curl() 对象的文档 中的示例:
#!/usr/bin/env python
import sys
from contextlib import closing as C
import pycurl
class Writer:
def __init__(self, file):
self.file = file
def write(self, data):
sys.stderr.write(data)
self.file.write(data)
def close(self):
self.file.close()
url = 'http://stackoverflow.com/questions/8909710/'
with C(pycurl.Curl()) as c, C(Writer(open('output','wb'))) as w:
c.setopt(c.URL, url)
c.setopt(c.WRITEFUNCTION, w.write)
c.setopt(c.FOLLOWLOCATION, True)
c.perform()
print >>sys.stderr, c.getinfo(c.HTTP_CODE), c.getinfo(c.EFFECTIVE_URL)