input: Write a function to create a web crawler that searches for a keyword in a given URL and its linked pages using BeautifulSoup.
  assert web_crawler('Python', 'http://example.com') == None
  assert web_crawler('Java', 'http://example.com') == None
output: def web_crawler(keyword, start_url):
      import requests
      from bs4 import BeautifulSoup
      from urllib.parse import urljoin, urlparse
      import re
      
      def crawl(url, visited):
          try:
              response = requests.get(url)
              if response.status_code != 200:
                  return None
              
              visited.add(url)
              soup = BeautifulSoup(response.text, 'html.parser')
              
              if keyword.lower() in soup.get_text().lower():
                  return url
              
              for link in soup.find_all('a', href=True):
                  full_url = urljoin(url, link['href'])
                  if full_url not in visited and is_valid_url(start_url, full_url):
                      result = crawl(full_url, visited)
                      if result:
                          return result
          except requests.RequestException:
              return None
          return None
      
      def is_valid_url(base, url):
          return urlparse(base).netloc == urlparse(url).netloc
      
      return crawl(start_url, set())