如何读取单独的cUrl块?

1 投票
2 回答
2345 浏览
提问于 2025-04-17 10:31

有没有办法从一个网址下载数据,并把每一部分数据单独保存到不同的文件里,以便进行分析呢?

我遇到一个问题,我觉得服务器把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)

撰写回答