Я пытаюсь проверить, существует ли определенное слово на странице для многих сайтов. Скрипт работает нормально, например, на 15 сайтах, а затем останавливается.utf8 codec не может декодировать байт 0x96 в python
UnicodeDecodeError: «utf8» кодек не может декодировать байт 0x96 в позиции 15344: недопустимый начальный байт
Я сделал поиск на StackOverflow и нашел много вопросов, на нем, но я не могу понять, что пошло не так в моем случае.
Я бы хотел либо решить эту проблему, либо, если есть ошибка, пропустите этот сайт. Совет Pls, как я могу это сделать, поскольку я новичок, и сам нижеприведенный код заставил меня написать день. Кстати сайт, который сценарий остановился на был 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"
Я скорее просто пропущу этот сайт, я могу сделать это как декодирование ('utf8', somecodeforerrortoskip) –
user976847: Есть много других преимуществ при использовании BeautifulSoup. Я думаю, вы должны уйти. –
Я смотрю на это спасибо –