使用urllib2获取纯文本,结果不完整

时间:2016-02-11 09:49:36

标签: python jenkins python-requests urllib2

我正在编写一个python脚本来解析jenkins的作业结果。我正在使用urllib2来获取consoleText,但是我收到的文件并不完整。获取文件的代码是:

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没有给我完整的结果?

更新

使用requests(由@svrist建议)而不是urllib2没有这样的问题,所以我转而使用它。我的新代码是:

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

但我仍然不知道为什么urllib2.urlopen无效。

1 个答案:

答案 0 :(得分:1)

使用chunked encoding response返回Jenkins构建日志。

Transfer-Encoding: chunked

根据几个other questions,似乎urllib2无法处理整个响应,正如您所观察到的,只返回第一个块。

我还建议使用requests包。