2012-07-04 47 views
2

我在python中使用pycurl發送一個請求到一個URL,該URL返回一個相當大的json格式的響應。當我在瀏覽器中獲取URL時,我看到了整個內容,但是如果使用pycurl並打印接收到的數據,我只能看到瀏覽到URL時看到的大約一半,並且使用解析數據時出錯JSON的庫指出:pycurl只geting響應的一部分

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數據與捲曲工具。
當您能夠獲取數據時,只需將curl選項轉換爲pycurl選項即可。

curl --help | less