示例#1
0
def click_connection_check():
    smart_request.smart_get_html('http://rambler.ru')
    # lbl_check_proxy_data.configure(text=smart_request.picked_proxy)
    if smart_request.checked == True:
        lbl_check_proxy_data.configure(text="функционирует", bg="green")
    else:
        lbl_check_proxy_data.configure(text="не функционирует", bg="red")
    lbl_check_ip_data.configure(text=smart_request.my_ip)
    btn_check.configure(state="disabled")
示例#2
0
def parser():
    global info, date, temps_night, temps_day
    html = smart_request.smart_get_html(
        'https://weather.com/ru-RU/weather/5day/l/RSXX0063:1:RS')
    soup = BeautifulSoup(html, 'html.parser')

    # формирование списка дат
    days = soup.findAll('span', class_='day-detail clearfix')
    date = []
    for i in days:
        date.append(i.text)
        # print(date[-1])
    # print(date)

    date = date[1:4]

    # преобразование в нормальный формат даты datetime
    for i in range(len(date)):
        date[i] = transform_to_date(date[i])
        date[i] = date[i].date()
        # print(date[i])

    # формирование списка температур
    tds = soup.findAll('td', class_='temp', headers='hi-lo')

    # отсеивание сегодняшней даты
    tds = tds[1:]

    temps = []
    # temps_day = []
    # temps_night = []

    for i in range(len(tds)):
        temps.append(tds[i].text)
        # print(temps[i])
        temps_day.append(temps[i].split('°')[0])
        temps_night.append(temps[i].split('°')[1])
        temps_night[i] = temps_night[i].split('°')[
            0]  # удаление лишнего символа градуса в конце

    info = []

    # формирование переменной для вывода в GUI
    for i in [0, 1, 2]:
        info.append(
            str(date[i]) + '  Тн =' + str(temps_night[i]) + '  Тд =' +
            str(temps_day[i]))
        print(info[i])
示例#3
0
def parser():
    global info, date, temps_night, temps_day
    # чтение страницы с инета при помощи модуля smart_request
    html = smart_request.smart_get_html('https://meteoinfo.ru/hmc-output/forecast/tab_1.php')

    # чтение сохраненного файла
    # html = open('C:\\Users\\a.ryadinskih\\Desktop\\meteoinfo.ru\\meteoinfo.htm', encoding='utf-8').read()

    soup = BeautifulSoup(html, 'html.parser')

    div = soup.find('div', id='div_print_0')

    tds = div.findAll('td', class_='td_short_gr')

    dates = []
    for td in tds:
        dates.append(td.text)
        # print(dates[-1])

    # отбрасываем лишние дни
    dates = dates[2:5]

    # print(dates)

    # date = []
    for i in [0, 1, 2]:
        # print(dates[i])
        dates[i] = transform_to_date(delete_name_of_day(dates[i]))
        date.append(dates[i].date())

    # нужно для обхода зарезервированного питоном слова "data-toggle"
    kwargs = {'data-toggle': 'tooltip'}

    trs = div.findAll('span', kwargs)

    temps = []
    for tr in trs:
        temps.append(tr.text)
        # print(temps[-1])

    temps_day = temps[:6]    # отсеил дневные
    temps_day = temps_day[1:]     # отсеил сегодняшнюю дату
    temps_night = temps[6:]         # отсеил ночные
    # temps_night = temps_night[1:]   # отсеил сегодняшнюю дату (не потребовалось)

    # print(temps_night)
    #     # print(temps_day)

    # отсечение лишних символов, преобразование в число и вычисление средней максимальнй температуры за сутки период
    # (особенность meteoinfo.ru )
    for i in range(len(temps_day)):
        # print(temps_day[i])
        temps_day[i] = temps_day[i].split('°')[0]
        temps_day[i] = (int(temps_day[i].split('..')[0]) + int(temps_day[i].split('..')[1]))/2

    # отсечение лишних символов, преобразование в число и вычисление средней минимальной температуры за сутки период
    # (особенность meteoinfo.ru )
    for i in range(len(temps_night)):
        temps_night[i] = temps_night[i].split('°')[0]
        temps_night[i] = (int(temps_night[i].split('..')[0]) + int(temps_night[i].split('..')[1]))/2

    # формирование переменной для вывода в GUI
    # info = []
    for i in [0, 1, 2]:
        info.append(str(date[i]) + '  Тн =' + str(temps_night[i]) + '  Тд =' + str(temps_day[i]))
        print(info[i])
示例#4
0
def gismeteo_parser():
    global info, date, temps_night, temps_day

    # чтение страницы с инета при помощи модуля smart_request
    # html = smart_request.smart_get_html('https://www.gismeteo.ru/weather-moscow-4368/tomorrow/')
    html = smart_request.smart_get_html(
        'https://www.gismeteo.ru/weather-moscow-4368/10-days/')

    # # чтение файла с указанием его кодировки. Обработка исключения,
    # #  если запускается на домашнем компе (другой путь файла)
    # try:
    #     html = open('C:\\Users\\a.ryadinskih\YandexDisk\YaDiscPyProjects\Project_1\\GISMETEO.htm',
    #                 encoding='utf-8').read()
    # except FileNotFoundError:
    #     html = open('C:\\Users\\Asher\\Desktop\\Project_1\\GISMETEO.htm', encoding='utf-8').read()

    # создание объекта Soup
    soup = BeautifulSoup(html, 'html.parser')
    # print(soup)

    # поиск тегов 'time' и 'span' нужных классов
    days = soup.findAll('div', class_='w_date')
    temps = soup.findAll('div', class_='value')

    # отсеивание лишних дат
    # days = days[::2]
    days = days[:10]

    # for i in days:
    #     print(i.text.strip())

    # отвеивание лишних температур
    temps = temps[1:10]

    # for i in temps:
    #     print(i.text)

    # заготовка списков
    date = transform_date(days)

    # temps_day = []
    # temps_night = []
    # info = []

    # отсечение знаков "+" и "-", распределение на ночные и дневные, отсев значений в цельсиях:
    for i in range(len(temps)):
        """проверка на случай, если разбега температур нету и один из объектов находится как None"""
        temporary_1 = temps[i].find('div', class_='maxt')
        temporary_2 = temps[i].find('div', class_='mint')

        if temporary_1 == None:
            temporary_1 = temporary_2

        if temporary_2 == None:
            temporary_2 = temporary_1

        temporary_1 = temporary_1.find('span',
                                       class_='unit unit_temperature_c').text
        # print(temporary_1)
        if (str(temporary_1)[0] == "+") or (str(temporary_1)[0] == "-"):
            temporary_1 = int(temporary_1[1:])
        # print(temporary_1)
        temps_day.append(temporary_1)

        temporary_2 = temporary_2.find('span',
                                       class_='unit unit_temperature_c').text
        # print(temporary_2)
        if str(temporary_2)[0] == "+":
            temporary_2 = int(temporary_2[1:])
        temps_night.append(temporary_2)

        # print(temps[i].text.split('+'))
        # temps_day.append(temps[i].text.split('+')[1])
        # temps_night.append(temps[i].text.split('+')[2])

    for i in [0, 1, 2]:
        # формирование переменной для вывода в GUI
        info.append(
            str(date[i]) + '  Тн =' + str(temps_night[i]) + '  Тд =' +
            str(temps_day[i]))
        print(info[i])
示例#5
0
def yaParser():
    global info, date, temps_night, temps_day

    # чтение страницы с инета при помощи модуля smart_request
    html = smart_request.smart_get_html('https://yandex.ru/pogoda/moscow')

    # чтение файла с указанием его кодировки. Обработка исключения, если
    # запускается на домашнем компе (другой путь файла)
    # try:
    #     html = open('C:\\Users\\a.ryadinskih\YandexDisk\YaDiscPyProjects\Project_1\\Yandex.htm', encoding='utf-8').read()
    # except FileNotFoundError:
    #     html = open('C:\\Users\\Asher\YandexDisk\YaDiscPyProjects\Project_1\\Yandex.htm', encoding='utf-8').read()

    # создание объекта Soup
    soup = BeautifulSoup(html, 'html.parser')

    # поиск тегов 'time' и 'span' нужных классов
    days = soup.findAll('time', class_='time forecast-briefly__date')

    # для случая изменения структуры сайта
    if days == []:
        days = soup.findAll('time', class_='time forecast-briefly-old__date')
    temps = soup.findAll('span', class_='temp__value')

    # отбрасывание лишних данных от результата парсинга

    # отснивание сегодняшней и лишних дат
    days = days[1:]

    # отсеивание лишних температур
    temps = temps[5:23]

    # проверка содержимого days и temps
    # for i in range(len(days)):
    #     print(days[i])
    #
    # for i in range(len(temps)):
    #     print(temps[i].text)

    # заготовка списков
    date = []
    temps_day = []
    temps_night = []
    info = []

    # вывод на печать сегодняшней даты
    # today = datetime.date.today()
    # print('Сегодня: ', today)

    for i in [0, 1, 2]:
        # print(days[i])
        date.append(days[i].get('datetime'))
        date[i] = date[i].split(' ')[0]  # отбросить указание часового пояса
        # date[i] = str(date[i])[2:]                   # отбросить ['
        # date[i] = str(date[i])[:16]                  # отбросить ']
        date[i] = datetime.datetime.strptime(str(
            date[i]), "%Y-%m-%d")  # преобразование даты в формат даты
        # date[i] = date[i].date()                                              # модуля datetime
        temps_day.append(
            temps[i *
                  2].text)  # разбиение на списки дневных и ночных температур
        temps_night.append(temps[i * 2 + 1].text)  #

        # убирание знаков '+'
        if temps_day[i][0] == "+":
            temps_day[i] = temps_day[i][1:]

        # temps_day[i] = float(temps_day[i])

        if temps_night[i][0] == "+":
            temps_night[i] = temps_night[i][1:]

        # temps_night[i] = float(temps_night[i])

        # формирование переменной для вывода в GUI
        info.append(
            str(date[i].date()) + '  Тн ' + str(temps_night[i]) + '  Тд ' +
            str(temps_day[i]))
        print(info[i])
示例#6
0
def click_connection_check():
    smart_request.smart_get_html('http://ya.ru')
    lbl_proxy.configure(text='Proxy: ' + smart_request.picked_proxy)