python一次读取网站源代码行100行

时间:2012-04-20 16:07:36

标签: python url urllib readline

我正在尝试一次从网站上读取源代码

例如:

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类中实现。

2 个答案:

答案 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