input: Write a python function to crawl internal and external URLs from a webpage.
  assert 'https://www.example.com/internal-link' in visited
  assert 'https://www.external.com' in urls_external
  assert 'https://www.example.com/another-internal-link' in visited
output: def crawl_urls(start_url):
      import requests
      from bs4 import BeautifulSoup
      from urllib.parse import urljoin, urlparse
      import re
  
      visited = set()
      urls_external = set()
  
      def is_external(url, base_url):
          return urlparse(url).netloc != urlparse(base_url).netloc
  
      def crawl(url):
          if url not in visited:
              visited.add(url)
              response = requests.get(url)
              soup = BeautifulSoup(response.text, 'html.parser')
  
              for link in soup.find_all('a', href=True):
                  full_url = urljoin(url, link['href'])
  
                  if is_external(full_url, start_url):
                      urls_external.add(full_url)
                  else:
                      crawl(full_url)
  
      crawl(start_url)
      return visited, urls_external
  
  # Example usage
  visited, urls_external = crawl_urls('https://www.example.com')