#
#   Пятнадцатый простой парсер для тестирования скорости работы.
#
#   Автор: <NAME>
#   Лицензия: MIT License
#

from bs4 import BeautifulSoup
from .parsers_base import get_htmls, get_html

URL = 'https://www.google.com/search?newwindow=1&hl=ru&sxsrf=ACYBGNQVOJ5xq1L-uxtvBuQXhZ7X-nxa0g%3A1581684802586&ei=Qp' \
      'hGXtuzI8avrgTLrKnIAg&q=%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE+%D0%B2%D0%B5%D1%88%D0%B0%D1%82%D1%8C+%D0%B2+' \
      '%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%85&oq=%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE+%D0%B2%D0%B5%D1%88%D0' \
      '%B0&gs_l=psy-ab.3.0.0j0i10l9.80411.82970..84514...0.0..0.128.1529.0j13......0....1..gws-wiz.......35i39j0i131j' \
      '0i67j0i20i263.MTKe0aQ0aRk'


def parse_fifteenth():
    return get_pages_data(get_htmls(get_urls(URL)))


def get_urls(url):
    res = []
    for i in range(10):
        res.append(url)
    return res


def get_pages_data(htmls):
    """
        Получает список HTML документов
        Возвращает список словарей с спарсенными данными со страниц

        :param htmls: список HTML документов
        :type htmls: list of str
        :return: list of str с данными спарсенными со страниц
    """
    data = []  # Создаем болванку для возвращаемого значения
    for html in htmls:  # Прогоняем каждый HTML из списка и достаем данные из него
        page_data = get_page_data(html)  # Получаем список c данными в HTML документе
        for pd in page_data:  # Проходимся по каждому элементу списка
            data.append(pd)  # Добавляем словарь в список с данными на return
    return data  # список со всеми спаренными данными из полученного списка HTML документов


def get_page_data(html):
    """
        Получает HTML документ, парсит его, и находит заголовки поисковой выдачи

        :param html: HTML документ
        :type html: str
        :return: list of str
    """
    res = []
    soup = BeautifulSoup(html, 'lxml')  # Создаем объект супа
    raw_titles = soup.find_all('div', 'BNeawe vvjwJb AP7Wnd')  # находит заголовки поисковой выдачи
    for raw in raw_titles:
        res.append(raw.text)
    return res


if __name__ == '__main__':
    # print(get_html(URL))
    print(parse_first())

#
#   Пятнадцатый простой парсер для тестирования скорости работы.
#
#   Автор: <NAME>
#   Лицензия: MIT License
#

from bs4 import BeautifulSoup
from .parsers_base import get_htmls, get_html

URL = 'https://www.google.com/search?newwindow=1&hl=ru&sxsrf=ACYBGNQVOJ5xq1L-uxtvBuQXhZ7X-nxa0g%3A1581684802586&ei=Qp' \
      'hGXtuzI8avrgTLrKnIAg&q=%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE+%D0%B2%D0%B5%D1%88%D0%B0%D1%82%D1%8C+%D0%B2+' \
      '%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%85&oq=%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE+%D0%B2%D0%B5%D1%88%D0' \
      '%B0&gs_l=psy-ab.3.0.0j0i10l9.80411.82970..84514...0.0..0.128.1529.0j13......0....1..gws-wiz.......35i39j0i131j' \
      '0i67j0i20i263.MTKe0aQ0aRk'


def parse_fifteenth():
    return get_pages_data(get_htmls(get_urls(URL)))


def get_urls(url):
    res = []
    for i in range(10):
        res.append(url)
    return res


def get_pages_data(htmls):
    """
        Получает список HTML документов
        Возвращает список словарей с спарсенными данными со страниц

        :param htmls: список HTML документов
        :type htmls: list of str
        :return: list of str с данными спарсенными со страниц
    """
    data = []  # Создаем болванку для возвращаемого значения
    for html in htmls:  # Прогоняем каждый HTML из списка и достаем данные из него
        page_data = get_page_data(html)  # Получаем список c данными в HTML документе
        for pd in page_data:  # Проходимся по каждому элементу списка
            data.append(pd)  # Добавляем словарь в список с данными на return
    return data  # список со всеми спаренными данными из полученного списка HTML документов


def get_page_data(html):
    """
        Получает HTML документ, парсит его, и находит заголовки поисковой выдачи

        :param html: HTML документ
        :type html: str
        :return: list of str
    """
    res = []
    soup = BeautifulSoup(html, 'lxml')  # Создаем объект супа
    raw_titles = soup.find_all('div', 'BNeawe vvjwJb AP7Wnd')  # находит заголовки поисковой выдачи
    for raw in raw_titles:
        res.append(raw.text)
    return res


if __name__ == '__main__':
    # print(get_html(URL))
    print(parse_first())

# #   Пятнадцатый простой парсер для тестирования скорости работы. # #   Автор: <NAME> #   Лицензия: MIT License # Получает список HTML документов         Возвращает список словарей с спарсенными данными со страниц          :param htmls: список HTML документов         :type htmls: list of str         :return: list of str с данными спарсенными со страниц # Создаем болванку для возвращаемого значения # Прогоняем каждый HTML из списка и достаем данные из него # Получаем список c данными в HTML документе # Проходимся по каждому элементу списка # Добавляем словарь в список с данными на return # список со всеми спаренными данными из полученного списка HTML документов Получает HTML документ, парсит его, и находит заголовки поисковой выдачи          :param html: HTML документ         :type html: str         :return: list of str # Создаем объект супа # находит заголовки поисковой выдачи # print(get_html(URL))