Próbuję sprawdzić, czy pewne słowo znajduje się na stronie dla wielu witryn. Skrypt działa dobrze dla 15 witryn, a następnie zatrzymuje się.Kodek utf8 nie może dekodować bajtu 0x96 w pythonie
UnicodeDecodeError: „utf8” kodek nie potrafi dekodować bajt 0x96 w pozycji 15344: nieprawidłowy początkowy bajt
zrobiłem wyszukiwania na stackoverflow i znalazł wiele problemów na nim, ale nie mogę zrozumieć, co wydaje się poszło nie tak w moim przypadku.
Chciałbym rozwiązać problem lub jeśli wystąpił błąd, pomiń tę witrynę. Pls radzi, jak mogę to zrobić, ponieważ jestem nowy, a sam poniższy kod zajęło mi dzień pisania. Nawiasem mówiąc miejsce, które skrypt zatrzymał się było 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"
Zgodnie komentarze Marka Zmieniłem kod do wdrożenia BeautifulSoup
htmlfile = urllib.urlopen("http://www.homestead.com")
page = BeautifulSoup((''.join(htmlfile)))
print page.prettify()
teraz otrzymuję ten błąd
page = BeautifulSoup((''.join(htmlfile)))
TypeError: 'module' object is not callable
Próbuję ich przykład szybkiego uruchamiania z http://www.crummy.com/software/BeautifulSoup/documentation.html#Quick%20Start. Jeśli skopiuję go, to kod działa poprawnie.
WRESZCIE udało mi się. Dziękuję wszystkim za pomoc. Oto ostateczny kod.
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"
Raczej po prostu pomijam tę stronę mogę zrobić to jak dekodowanie ('utf8', somecodeforerrortoskip) –
user976847: Istnieje wiele innych zalet w korzystaniu z BeautifulSoup. Myślę, że powinieneś spróbować. –
Zajrzyj do niego dzięki –