J'ai le fichier HTML appelé test.html
il a un mot בדיקה
.
J'ouvre le test.html et imprime son contenu en utilisant ce bloc de code:
file = open("test.html", "r")
print file.read()
mais il imprime ??????
, pourquoi cela est arrivé et comment pourrais-je le réparer?
BTW. quand j'ouvre un fichier texte ça marche bien.
Edit: J'avais essayé ceci:
>>> import codecs
>>> f = codecs.open("test.html",'r')
>>> print f.read()
?????
import codecs
f=codecs.open("test.html", 'r')
print f.read()
Essayez quelque chose comme ça.
Vous pouvez lire une page HTML en utilisant 'urllib'.
#python 2.x
import urllib
page = urllib.urlopen("your path ").read()
print page
vous pouvez utiliser le code suivant:
from __future__ import division, unicode_literals
import codecs
from bs4 import BeautifulSoup
f=codecs.open("test.html", 'r', 'utf-8')
document= BeautifulSoup(f.read()).get_text()
print document
Si vous souhaitez supprimer toutes les lignes vides entre les mots et obtenir tous les mots sous forme de chaîne (évitez également les caractères spéciaux, les chiffres), incluez également:
import nltk
from nltk.tokenize import Word_tokenize
docwords=Word_tokenize(document)
for line in docwords:
line = (line.rstrip())
if line:
if re.match("^[A-Za-z]*$",line):
if (line not in stop and len(line)>1):
st=st+" "+line
print st
* définir st
comme string
initialement, comme st=""
Utilisez codecs.open avec le paramètre encoding.
import codecs
f = codecs.open("test.html", 'r', 'utf-8')
J'ai rencontré ce problème aujourd'hui aussi. J'utilise Windows et la langue système par défaut est le chinois. Par conséquent, quelqu'un peut rencontrer cette erreur Unicode de la même manière. Ajoutez simplement encoding = 'utf-8'
:
with open("test.html", "r", encoding='utf-8') as f:
text= f.read()
CODE:
import codecs
path="D:\\Users\\html\\abc.html"
file=codecs.open(path,"rb")
file1=file.read()
file1=str(file1)