2012-07-04 2 views
2

Я делаю запрос на python, используя pycurl, к URL-адресу, который возвращает достаточно большой отформатированный ответ json. Когда я перебираю URL-адрес в браузере, я вижу все содержимое, но если я использую pycurl и распечатываю полученные данные, я вижу только половину того, что вижу, когда просматриваю URL-адрес, и получаю сообщение об ошибке, анализируя данные, используя библиотека JSON с указанием:pycurl только получает часть ответа

ValueError: Unterminated string starting at: line 1 column 16078 (char 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 функции в настоящее время только печать данных.

Кто-нибудь знает, почему я только получаю часть ответа? Я использовал массовые таймауты только для того, чтобы попытаться решить эту проблему, я изначально не указывал никаких тайм-аутов, но все еще получал эту ошибку.

ответ

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 
0

Вы могли бы попытаться получить доступ к этим данным JSon с инструментом для завивки.
Когда вы можете получить данные, просто переведите варианты завивки в параметры pycurl.

curl --help | less