2017-03-02 26 views
0

空白文字と空白文字をすべて削除するコードを実装しようとしていますが、そのページにある英数字の上位3文字を数えます。私の質問は二重です。HTML文字列からすべてのスペースを削除する

1)スプリット用に使用している方法は機能していないように見えますが、なぜ動作しないのかわかりません。私の知っていることを最大限に活用するには、HTMLソースコードから空白と空白をすべて削除する必要がありますが、そうではありません(下のamazonの例から最初に返された値を参照してください)。

2)私はmost_common操作とひどく慣れていないんだと、私は「http://amazon.com」に自分のコードをテストしたとき、私は次の出力を得る:

The top 3 occuring alphanumeric characters in the html of http://amazon.com 
: [(u' ', 258), (u'a', 126), (u'e', 126)] 

uが返さmost_common(3で何を意味します)値?

私の現在のコード:

import requests 
import collections 


url = raw_input("please eneter the url of the desired website (include http://): ") 

response = requests.get(url) 
responseString = response.text 

print responseString 

topThreeAlphaString = " ".join(filter(None, responseString.split())) 

lineNumber = 0 

for line in topThreeAlphaString: 
    line = line.strip() 
    lineNumber += 1 

topThreeAlpha = collections.Counter(topThreeAlphaString).most_common(3) 

print "The top 3 occuring alphanumeric characters in the html of", url,": ", topThreeAlpha 
+0

つまり、ユニコード文字列です。あなたはスペース '' .join(...) 'で' join() 'して、空の文字列' ""で結合するだけです。.join(...) ' – AChampion

答えて

0

空白の世話をするために、あなたが転がっ任意の生のHTML文字を取り除くためにHTMLParser.HTMLParserのインスタンスとそのunescapeメソッドを使用するとよいでしょう。文字を数えるには、collections.Counterをチェックしてください。

import requests 
from collections import Counter 
from HTMLParser import HTMLParser 

response = requests.get('http://www.example.com') 
responseString = response.text 

parser = HTMLParser() 
c = Counter(''.join(parser.unescape(responseString).split()) 

print(c.most_common()[:3]) 
関連する問題