Кодек utf8 не может декодировать байт 0x96 в питоне
Я пытаюсь проверить, есть ли определенное слово на странице для многих сайтов. Сценарий работает нормально, скажем, для 15 сайтов, а затем останавливается.
UnicodeDecodeError: кодек «utf8» не может декодировать байт 0x96 в позиции 15344: недопустимый начальный байт
Я выполнил поиск по stackoverflow и обнаружил много проблем с ним, но я не могу понять, что пошло не так в моем случае.
Я хотел бы либо решить ее, либо в случае ошибки пропустить этот сайт. Пожалуйста, совет, как я могу сделать это, как я новичок, и сам код ниже занял у меня один день, чтобы написать. Кстати сайт, на котором остановился скрипт был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"
Согласно комментариям Марка, я изменил код для реализации Beautifulsoup
htmlfile = urllib.urlopen("http://www.homestead.com")
page = BeautifulSoup((''.join(htmlfile)))
print page.prettify()
теперь я получаю эту ошибку
page = BeautifulSoup((''.join(htmlfile)))
TypeError: 'module' object is not callable
Я пытаюсь их быстрый пример изhttp://www.crummy.com/software/BeautifulSoup/documentation.html#Quick%20Start, Если я копирую и вставляю его, то код работает нормально.
Я наконец получил его на работу. Спасибо за вашу помощь. Вот окончательный код.
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"