【问题标题】:pycurl only geting part of the responsepycurl 只得到部分响应
【发布时间】:2023-04-12 18:17:01
【问题描述】:

我在 python 中使用 pycurl 向一个返回相当大的 json 格式响应的 URL 发出请求。当我在浏览器中转到 URL 时,我看到了全部内容,但如果我使用 pycurl 并打印接收到的数据,我只能看到浏览到 URL 时看到的内容的一半左右,并且使用解析数据时出现错误json 库声明:

ValueError:未终止的字符串开始于:第 1 行第 16078 列(字符 16078)

pycurl 请求是这样的:

conn = pycurl.Curl()
conn.setopt(pycurl.URL, myUrl)
conn.setopt(pycurl.WRITEFUNCTION, on_receive)
conn.setopt(pycurl.CONNECTTIMEOUT, 30)
conn.setopt(pycurl.TIMEOUT, 30)
conn.setopt(pycurl.NOSIGNAL, 10)
conn.perform()

on_receive 函数目前只是打印数据。

有人知道为什么我只得到部分回复吗?我使用大量超时只是为了解决这个问题,我最初没有指定任何超时但仍然收到此错误。

【问题讨论】:

    标签: python json pycurl


    【解决方案1】:

    在pycurl中,你可以设置这个,

    import pycurl
    pycurl.CONTENT_LENGTH_DOWNLOAD 
    

    尝试使用

    import Curl, pycurl
    con = Curl()
    con.set_option(pycurl.CONTENT_LENGTH_DOWNLOAD, 9999999999)
    con.get('url' ....
    

    也可以尝试以下操作,直到成功:

    pycurl.SIZE_DOWNLOAD
    pycurl.REQUEST_SIZE 
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用 curl 工具访问这些 json 数据。
      当您能够获取数据时,只需将 curl 选项转换为 pycurl 选项即可。

      curl --help | less 
      

      【讨论】: