codec utf8 não pode decodificar o byte 0x96 em pyth
Estou tentando verificar se uma determinada palavra está em uma página para muitos sites. O script funciona bem para digamos 15 sites e depois par
UnicodeDecodeError: o codec 'utf8' não pode decodificar o byte 0x96 na posição 15344: byte inicial inválido
Fiz uma pesquisa no stackoverflow e encontrei muitos problemas, mas não consigo entender o que deu errado no meu caso.
Gostaria de resolvê-lo ou, se houver um erro, pule esse site. Pls conselhos como eu posso fazer isso como eu sou novo e o código abaixo me levou um dia para escrever. A propósito, o site em que o script parou foihttp: //www.homestead.co
filetocheck = open("bloglistforcommenting","r")
resultfile = open("finalfile","w")
for countofsites in filetocheck.readlines():
sitename = countofsites.strip()
htmlfile = urllib.urlopen(sitename)
page = htmlfile.read().decode('utf8')
match = re.search("Enter your name", page)
if match:
print "match found : " + sitename
resultfile.write(sitename+"\n")
else:
print "sorry did not find the pattern " +sitename
print "Finished Operations"
Conforme os comentários de Mark, mudei o código para implementar beautifulsoup
htmlfile = urllib.urlopen("http://www.homestead.com")
page = BeautifulSoup((''.join(htmlfile)))
print page.prettify()
agora estou recebendo esse erro
page = BeautifulSoup((''.join(htmlfile)))
TypeError: 'module' object is not callable
Estou tentando o exemplo de início rápido dehttp: //www.crummy.com/software/BeautifulSoup/documentation.html#Quick%20Star. Se eu copiar e colar, o código funcionará be
Eu finalmente consegui que isso funcione. Obrigado a todos por sua ajuda. Aqui está o código final.
import urllib
import re
from BeautifulSoup import BeautifulSoup
filetocheck = open("listfile","r")
resultfile = open("finalfile","w")
error ="for errors"
for countofsites in filetocheck.readlines():
sitename = countofsites.strip()
htmlfile = urllib.urlopen(sitename)
page = BeautifulSoup((''.join(htmlfile)))
pagetwo =str(page)
match = re.search("Enter YourName", pagetwo)
if match:
print "match found : " + sitename
resultfile.write(sitename+"\n")
else:
print "sorry did not find the pattern " +sitename
print "Finished Operations"