2017-03-02 2 views
0

J'essaie d'implémenter du code qui supprime tous les espaces et espaces blancs, puis comptabilise les 3 premiers caractères alphanumériques apparaissant dans la page. Ma question est double.Suppression de tout espacement de la chaîne HTML

1) La méthode que j'utilise pour split ne semble pas fonctionner et je ne sais pas pourquoi cela ne fonctionne pas. Pour autant que je sache, se joindre à la division devrait supprimer tous les espaces et espaces blancs du code source html, mais ce n'est pas le cas (voir la première valeur renvoyée de l'exemple d'Amazon ci-dessous).

2) Je ne connais pas terriblement avec l'opération de most_common et quand je l'ai testé mon code sur « http://amazon.com » Je reçois la sortie suivante:

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

Qu'est-ce que u signifie dans le most_common retourné (3) valeurs?

Mon code actuel:

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

Cela signifie que c'est une chaîne unicode. Vous êtes 'join()' en arrière avec un espace '" ".join (...)', rejoignez simplement avec une chaîne vide '" ".join (...)' – AChampion

Répondre

0

Pour prendre soin des espaces, vous aurez envie d'utiliser une instance de HTMLParser.HTMLParser et sa méthode unescape pour se débarrasser de tous les caractères HTML brut qui traînent. Pour compter les caractères, vous devriez vérifier 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])