input: Write a python function to get the top N most frequent words from a webpage.
  assert get_top_words('https://en.wikipedia.org/wiki/Artificial_intelligence', 5)==[('the', 456), ('of', 372), ('and', 297), ('to', 245), ('in', 198)]
  assert get_top_words('https://en.wikipedia.org/wiki/Machine_learning', 3)==[('the', 320), ('of', 280), ('and', 215)]
  assert get_top_words('https://en.wikipedia.org/wiki/Data_science', 4)==[('the', 405), ('of', 345), ('and', 298), ('data', 210)]
output: def get_top_words(url, N):
      import requests
      from collections import Counter
      from bs4 import BeautifulSoup
      import re
  
      # Request the webpage content
      response = requests.get(url)
      soup = BeautifulSoup(response.content, 'html.parser')
      
      # Extract text and clean it
      text = soup.get_text()
      words = re.findall(r'\b\w+\b', text.lower())
      
      # Count word frequencies
      word_counts = Counter(words)
      
      # Get the top N most common words
      most_common_words = word_counts.most_common(N)
      
      return most_common_words