2016-02-11 9 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包。