input: from typing import List
  
  def crawl(url: str) -> List[str]:
      """
      Create a web crawler in Python that starts from a given URL and looks for other links 
      on the page, then scrapes the page content. The crawler should visit each page only once 
      and return a list of all visited URLs in the order they were visited.
  
      Example:
      >>> crawl('http://example.com')
      ['http://example.com', 'http://example.com/page1', 'http://example.com/page2']
      """
output:     from urllib.parse import urljoin
      from bs4 import BeautifulSoup
      import requests
  
      visited_urls = []
      queue = [url]
  
      while queue:
          current_url = queue.pop(0)
          if current_url not in visited_urls:
              visited_urls.append(current_url)
              try:
                  response = requests.get(current_url)
                  response.raise_for_status()
                  soup = BeautifulSoup(response.text, 'html.parser')
                  for link in soup.find_all('a', href=True):
                      absolute_url = urljoin(current_url, link['href'])
                      if absolute_url not in visited_urls and absolute_url not in queue:
                          queue.append(absolute_url)
              except requests.exceptions.RequestException:
                  continue
  
      return visited_urls