2012-04-20 9 views
0

でウェブサイトのソースコードの行100行を読み込む:Pythonは私が例えば時間</p> <p>でウェブサイト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()またはtell()seek()といういくつかの解決策がありますが、これらの機能はHTTPResponseクラスに実装されていないようです。あなたが行うことができるはずのでthe documentationurllib.request.urlopen(uri)に応じ

答えて

3

は、オブジェクトのようなファイルを返します。

from itertools import islice 

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

itertools documentationisliceの詳細情報があります。イテレータを使用すると、whileループと手動増分が回避されます。

あなたは絶対にreadline()を使用する必要がある場合、それはforループを使用することをお勧めします、すなわち

for i in xrange(100): 
    ... 
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 
関連する問題

 関連する問題