Estoy tratando de verificar si una determinada palabra está en una página para muchos sitios. La secuencia de comandos funciona bien para decir 15 sitios y luego se detiene.códec utf8 no puede decodificar byte 0x96 en python
UnicodeDecodeError: códec 'utf8' no puede decodificar el byte 0x96 en la posición 15344: byte de inicio no válida
Hice una búsqueda en StackOverflow y encontré muchas cuestiones en él, pero me parece que no puede entender lo salió mal en mi caso.
Me gustaría resolverlo o si hay un error, omita ese sitio. Pls consejos sobre cómo puedo hacer esto ya que soy nuevo y el código siguiente me ha tomado un día para escribir. Por cierto, el sitio que el guión se detuvo en la era http://www.homestead.com
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"
De acuerdo con los comentarios de Mark He cambiado el código para implementar BeautifulSoup
htmlfile = urllib.urlopen("http://www.homestead.com")
page = BeautifulSoup((''.join(htmlfile)))
print page.prettify()
ahora estoy consiguiendo este error
page = BeautifulSoup((''.join(htmlfile)))
TypeError: 'module' object is not callable
Estoy intentando su ejemplo de inicio rápido desde http://www.crummy.com/software/BeautifulSoup/documentation.html#Quick%20Start. Si copio pegarlo, el código funciona bien.
FINALMENTE lo tengo para trabajar. Gracias por toda tu ayuda. Aquí está el 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"
Prefiero simplemente omitir este sitio, puedo hacerlo como decodificar ('utf8', somecodeforerrortoskip) –
user976847: Hay muchas otras ventajas en el uso de BeautifulSoup. Creo que deberías intentarlo. –
Lo estoy viendo gracias –