我正在尝试一次从网站上读取源代码
例如:
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()
或tell()
和seek()
的解决方案,但似乎这些函数未在HTTPResponse类中实现。
答案 0 :(得分:3)
根据the documentation urllib.request.urlopen(uri)
返回一个像object这样的文件,所以你应该可以这样做:
from itertools import islice
def getLines(self)
res = []
for line in islice(self.code,100):
res.append(line)
return res
itertools documentation中有islice
的更多信息。使用迭代器将避免while
循环和手动增量。
如果绝对必须使用readline()
,建议使用for
循环,即
for i in xrange(100):
...
答案 1 :(得分: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