Я пытаюсь проверить, существует ли определенное слово на странице для многих сайтов. script работает нормально, скажем, 15 сайтов, а затем останавливается.
UnicodeDecodeError: кодек 'utf8' не может декодировать байт 0x96 в позиции 15344: недопустимый стартовый байт
Я сделал поиск в stackoverflow и нашел много проблем, но я не могу понять, что пошло не так в моем случае.
Я хотел бы либо решить его, либо, если есть ошибка, пропустите этот сайт. Совет Pls, как я могу это сделать, поскольку я новичок, и сам нижеприведенный код заставил меня написать день. Кстати, сайт, на котором остановился script, был 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"
В соответствии с комментариями Mark я изменил код для реализации 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"