I’m trying to create a function that has 2 arguments, a web URL, and a search word. The function should print out the number of times the word is seen on the page.
I am currently unsure of what I’m doing wrong, as my output isn’t giving me neither an error nor an output…
from html.parser import HTMLParser from urllib.request import urlopen class customWebScraper(HTMLParser): def __init__(self, searchWord, desiredURL): HTMLParser.__init__(self) self.searchWord= '' self.desiredURL = '' def scrapePage(searchWord, desiredURL): wordCount = 0 if searchWord.count(searchWord) > 0: wordCount += 1 print(wordCount) searchWord= '' desiredURL = '' urlContents = urlopen(desiredURL).read().decode('utf-8') parseURL = customWebScraper(searchWord, desiredURL) parseURL.feed(urlContents)
So if a user types:
customWebScraper(‘name’,’http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm‘)
it should output: 6
Advertisement
Answer
Here’s a simple example script that defines the function you want.
from urllib.request import urlopen class customWebScraper: def __init__(self, searchWord, desiredURL): self.searchWord = searchWord self.desiredURL = desiredURL def scrapePage(self): url_content = urlopen(self.desiredURL).read().decode('utf-8') return url_content.lower().count(self.searchWord.lower()) parseURL = customWebScraper('name', 'http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm') count = parseURL.scrapePage() print('"{}" appears in {} exactly {} times'.format(parseURL.searchWord, parseURL.desiredURL, count))
when I run it the output is:
“name” appears in http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm exactly 6 times
I assumed you wanted case-insensitive match because in the page you provided, name
appears 6 times only if you also count appName
, etc.