2016-02-11 42 views
2

我在寫一個python腳本來解析jenkins作業結果。我使用urllib2來獲取consoleText,但是我收到的文件不是滿的。獲取該文件的代碼是:使用urllib2獲取純文本,結果不完整

data = urllib2.urlopen('http://<server>/job/<jobname>/<buildid>/consoleText') 
lines = data.readlines() 

而且我得到的行數是2306,而在控制檯日誌行的實際數量是37521.我可以檢查通過購買獲取wget文件:

$ wget 'http://<server>/job/<jobname>/<buildid>/consoleText' 
$ wc -l consoleText 
37521 

爲什麼urlopen不給我全部結果?

UPDATE:

使用requests(由@svrist的建議),而不是urllib2沒有這樣的問題,所以我切換到它。我的新代碼是:

data = requests.get('http://<server>/job/<jobname>/<buildid>/consoleText') 
lines = [l for l in data.iter_lines()] 

但我仍然不知道爲什麼urllib2.urlopen不能正常工作。

+3

不是那個傢伙,但每個人都會說:「使用請求」 – svrist

+0

您是否認爲可能會有最大數量的項目可以請求? – Lisa

回答

1

Jenkins構建日誌使用chunked encoding response返回。

Transfer-Encoding: chunked 

基於幾個otherquestions,好像urllib2不處理整個響應,正如你所觀察到,只返回第一個塊。

我也推薦使用requests包。