0

我正在尝试一次从网站读取 100 行的源代码

例如:

self.code = urllib.request.urlopen(uri)

#Get 100 first lines
self.lines = self.getLines()

...

#Get 100 next lines
self.lines = self.getLines()

我的 getLines 代码是这样的:

def getLines(self):
    res = []
    i = 0

    while i < 100:
        res.append(str(self.code.readline()))
        i+=1

return res

但问题是它getLines()总是返回代码的前 100 行。

我见过一些带有next()ortell()和的解决方案seek(),但似乎这些功能没有在 HTTPResponse 类中实现。

4

2 回答 2

3

根据文档 urllib.request.urlopen(uri)返回一个类似对象的文件,所以你应该能够做到:

from itertools import islice

def getLines(self)
    res = []
    for line in islice(self.code,100): 
        res.append(line)
    return res

isliceitertools 文档中有更多信息。使用迭代器将避免while循环和手动增量。

如果您绝对必须使用readline(),建议使用for循环,即

for i in xrange(100): 
    ... 
于 2012-04-20T16:17:29.507 回答
0

这对我有用。

#!/usr/bin/env python

import urllib

def getLines(code):
    res = []
    i = 0

    while i < 100:
        res.append(str(code.readline()))
        i+=1

    return res

uri='http://www.google.com/'
code = urllib.urlopen(uri)

#Get 100 first lines
lines = getLines(code)

print lines

#Get 100 next lines
lines = getLines(code)

print lines
于 2012-04-20T16:20:58.577 回答