# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
from urllib.request import urlopen, Request


def search(term, num_results=10, lang="en"):

    user_agent = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
        "Chrome/61.0.3163.100 Safari/537.36"
    }

    def fetch_results(search_term, number_results, language_code):
        escaped_search_term = search_term.replace(" ", "+")

        google_url = "https://www.google.com/search?q={}&num={}&hl={}".format(
            escaped_search_term, number_results + 1, language_code
        )
        response = Request(url=google_url, headers=user_agent)
        response_open = urlopen(response)

        return response_open.read()

    def parse_results(raw_html):

        soup = BeautifulSoup(raw_html, "html.parser")
        result_block = soup.find_all("div", attrs={"class": "g"})
        for result in result_block:
            link = result.find("a", href=True)
            title = result.find("h3")
            if link and title:
                yield link["href"]

    html = fetch_results(term, num_results, lang)
    return list(parse_results(html))
