input: Write a function to create a basic web crawler in Python that starts from a given URL, looks for other links in the page, and scrapes the page content. The crawler should use the `requests` and `BeautifulSoup` libraries and should keep track of visited URLs to avoid re-crawling them.
  
  def crawl(url):
      visited = set()
      queue = [url]
      
      while queue:
          curr = queue.pop(0)
          visited.add(curr)
          response = requests.get(curr)
          
          if response.ok:
              soup = BeautifulSoup(response.text, 'html.parser')
              
              # Scrape the page here 
              
              # Find all the links
              links = soup.find_all('a', href=re.compile('^http'))
              
              for link in links:
                  if link['href'] not in visited:
                      queue.append(link['href'])
  
  assert crawl('http://example.com') == None
  assert crawl('http://invalidurl.com') == None
  assert crawl('http://nonexistentpage.com') == None
  assert crawl('http://test.com') == None
  assert crawl('http://example.com/link1') == None
output: def crawl(url):
      visited = set()
      queue = [url]
      
      while queue:
          curr = queue.pop(0)
          visited.add(curr)
          response = requests.get(curr)
          
          if response.ok:
              soup = BeautifulSoup(response.text, 'html.parser')
              
              # Scrape the page here 
              
              # Find all the links
              links = soup.find_all('a', href=re.compile('^http'))
              
              for link in links:
                  if link['href'] not in visited:
                      queue.append(link['href'])