Postade min fråga i tråden för nybörjarfrågor tidigare i veckan men då jag inte fått något svar där skapar jag en tråd istället i hopp om att få svar här istället.
--------------------------------------------------------------------------------
Försökte följa denna guide för att göra en s.k. Web Crawler.
Grejen är bara den att jag har skrivit av koden EXAKT. Jag har även döpt min fil till EXAKT samma som den som skrev texten.
Jag har sedan lagt filen i C:/Python34, precis som den som skrev texten (med undantag av att författaren hade Python32.
När jag sedan ska kalla min funktion skriver jag exakt samma sak som författaren i Python IDLE, men jag får lik förbannat felet:
Mitt funktionsanrop:
All kod:
--------------------------------------------------------------------------------
Försökte följa denna guide för att göra en s.k. Web Crawler.
Grejen är bara den att jag har skrivit av koden EXAKT. Jag har även döpt min fil till EXAKT samma som den som skrev texten.
Jag har sedan lagt filen i C:/Python34, precis som den som skrev texten (med undantag av att författaren hade Python32.
När jag sedan ska kalla min funktion skriver jag exakt samma sak som författaren i Python IDLE, men jag får lik förbannat felet:
Kod:
Traceback (most recent call list): File "<pyshell#2>", line 1, in <module> spider("http://www.dreamhost.com", "secure", 200) NameError: name 'spider' is not defined
Mitt funktionsanrop:
Kod:
spider("http://www.dreamhost.com", "secure", 200)
All kod:
Kod:
from html.parser import HTMLParser from urllib.request import urlopen from urllib import parse class LinkParser(HTMLParser): def handle_starttag(self, tag, attrs): if tag == 'a': for (key, value) in attrs: if key == 'href': newUrl = parse.urljoin(self.baseUrl, value) self.links = self.links + [newUrl] def getLinks(self, url): self.links = [] self.baseUrl = url response = urlopen(url) if response.getheader('Content-Type') == 'text/html': htmlBytes = response.read() htmlString = htmlBytes.decode("utf-8") self.feed(htmlString) return htmlString, self.links else: return "", [] def spider(url, word, maxPages): pagesToVisit = [url] numberVisited = 0 foundWord = 0 while numberVisited < maxPages and pagesToVisit != [] and not foundWord: numberVisited = numberVisited + 1 url = numberVisited + 1 url = pagesToVisit[0] pagesToVisit = pagesToVisit[1:] try: print(numberVisited, "Visiting: ", url) parser = LinkParser() data, links = parser.getLinks(url) if data.find(word)>-1: foundWord = True pagesToVisit = pagesToVisit + links print("**Success!**") except: print("**Failed!**") if foundWord: print("The word", word, "was found at", url) else: print("Word never found")