2017-02-19 6 views
0

私はPythonプログラムに問題があり、テキストファイルのURLアドレスから読み込み、divタグなどの出現回数を読み込んでカウントします。 エラーが発生しました のライン23、ジ[ffline [] K] - = 1Python I/O、URL読み込み、文字列、数

import urllib 
with open('top5_BRZ.txt') as urlf: 
    uf=urlf.readlines() 
for i in range(len(uf)): 
    link = uf[i] 
    f = urllib.urlopen(link) 
    myfile = f.read() 
    fline=myfile.split('\n') 
    di={} 
    for j in range(len(fline)): 
     line = fline[j] 
     line = line.replace('"', " ") 
     line = line.replace("'", " ") 
     line = line.replace('<', " ") 
     line = line.replace('>', " ") 
     line = line.replace('=', " ") 
     line = line.replace('/', " ") 
     line = line.replace("\\", " ") 
     ffline=line.split(' ') 
     for k in range(len(ffline)): 
      di[ffline[k]]-=1 
     sx = sorted(di.items(), key=operator.itemgetter(1)) 
     rr=0 
     for key, value in di: 
      if(rr==25): break 
      print key,value 
      rr+=1 

答えて

2

@brianに同意します。キーがディクショナリにあるかどうかをチェックし、値を減らす以下のコードを使用することができます(22行目)。

for k in range(len(ffline)): 
    if ffline[k] in di.keys(): 
     di[ffline[k]] -= 1 
    else: 
     di[ffline[k]] = something 
2

di[ffline[k]]-=1が実行されるときdictdiがそれに任意のキーを持っていません。 ffline[k]キーの値をデクリメントしようとすると、diはまだ空のdictです。

0

あなたのHTMLを解析するためにhtml5libを使うのを忘れていました:

import html5lib                                       
import urllib                                        

def main():                                        
    for link in ["http://www.google.com/"]:                                
     f = urllib.urlopen(link)                                   
     tree = html5lib.parse(f)                                   
     divs = len(tree.findall("*//{http://www.w3.org/1999/xhtml}div"))                         
     print("{}: {} divs".format(link, divs))                               

main()     
関連する問題