input: Write a python function to extract all hyperlinks and their texts from a given URL using BeautifulSoup.
  assert extract_site_information('https://en.wikipedia.org/wiki/Web_scraping')[:3] == [('Web scraping', '/wiki/Web_scraping'), ('data scraping', '/wiki/Data_scraping'), ('data extraction', '/wiki/Data_extraction')]
  assert extract_site_information('https://www.example.com') == [('More information...', 'https://www.iana.org/domains/example')]
  assert extract_site_information('https://www.python.org')[:3] == [('Python', 'https://www.python.org/'), ('PSF', 'https://www.python.org/psf/'), ('Docs', 'https://docs.python.org/3/')]
output: def extract_site_information(url):
      import requests
      from bs4 import BeautifulSoup
      
      response = requests.get(url)
      soup = BeautifulSoup(response.content, 'html.parser')
      
      links = []
      for a_tag in soup.find_all('a', href=True):
          text = a_tag.get_text(strip=True)
          href = a_tag['href']
          if href.startswith('http'):
              links.append((text, href))
          else:
              links.append((text, url + href))
      
      return links