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")
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])
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])
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])
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])
def click_connection_check(): smart_request.smart_get_html('http://ya.ru') lbl_proxy.configure(text='Proxy: ' + smart_request.picked_proxy)