input: Write a python function to crawl web pages starting from a given URL and collect all visited URLs.
  assert crawl('https://example.com')==['https://example.com', 'https://example.com/link1', 'https://example.com/link2']
  assert crawl('https://example.org')==['https://example.org', 'https://example.org/about', 'https://example.org/contact']
  assert crawl('https://testsite.com')==['https://testsite.com', 'https://testsite.com/page1', 'https://testsite.com/page2']
output: import requests
  from bs4 import BeautifulSoup
  from urllib.parse import urljoin
  
  def crawl(start_url):
      visited_urls = set()
      urls_to_visit = [start_url]
  
      while urls_to_visit:
          url = urls_to_visit.pop(0)
          if url not in visited_urls:
              visited_urls.add(url)
              try:
                  response = requests.get(url)
                  if response.status_code == 200:
                      soup = BeautifulSoup(response.content, 'html.parser')
                      for link in soup.find_all('a', href=True):
                          absolute_url = urljoin(url, link['href'])
                          if absolute_url not in visited_urls:
                              urls_to_visit.append(absolute_url)
              except requests.RequestException:
                  pass
  
      return list(visited_urls)