Форум сайта python.su
Задумался над реализацией следующего кода.
Нужно написать скрипт, который бы отслеживал изменения конкретного значения на сайте (в определенном хтмл теге) например курс валюты, температуры или чего то другого.
Интересует конкретно реализация работы такого скрипта, чтобы при запуске его из консоли скажем, он работал и выводил сообщение об изменениях в значение, которое парсится или отправлял сообщение на личную почту.
Офлайн
1. Получаем хтмл код - urllib.urlopen
2. Парсим из него нужные значения (неоднократно обсуждалось на этом форуме)
3. Отличаются ли они от предыдущих
Если да
4. Сохраняем значения
5. Посылаем письмо об этом - smtplib
6. ПРОФИТ
Какой из этих пунктов вызывает затруднения?
Офлайн
А как разместить скрипт в директории сайта, чтобы можно было прикрутить ему веб интерфейс с парой кнопочек для запуска и остановки ну и чтобы выводилось значение (которое парсили) на странице.
Что тут почитать, использовать?
Офлайн
>А как разместить скрипт в директории сайта, чтобы можно было прикрутить ему веб интерфейс
раз есть какой-то сайт на который нужно выводить, то я бы просто выкусывал нужный html (запуск по крону, либо демоном), ложил в файлик, а движок сайта при отрисовке страницы его вставлял бы куда надо.
Офлайн
“А как разместить скрипт в директории сайта”
Не очень понятно в чем проблема? Те это сайт ваш или в интернете, из которого изменения? я так понял что в интернете.
Кроме сказанного o7412369815963 я бы добавил что вы наверное захотите отслеживать несколько значений. Соответственно система должна включать
1 базу идентификаторов того что вы хотите мониторить. Наверное список пар - url+ regex или кусок кода для выделения значения из странички и наверное символьное название чтобы не запутаться.
2 базу истории изменения этих параметров, или по крайней мере прошлое значение.
Система не очень сложная помоему, но требует аккуратной реализации (учитывая автозапуск и синхронизацию при добавлении новых контролируемых адресов).
Поэтому лучше если вы приведете ваши попытки. Можете писать в личку если что.
Офлайн
Тогда такой вопрос:
Как парсить данные с сайта, который требует авторизации. То есть чтобы просмотреть информацию нужно ввести логин и пароль. Без авторизации ничего интересного не увидишь. Как парсить данные с авторизацией в запросе? Подскажите какие нибудь простые и проверенные способы?
Офлайн
esalОчень просто - обычно авторизация основана на куках (если там Basic или Digest авторизация - то все намного проще), поэтому достаточно просто хранить и передавать куки между запросами. Ну и соответственно сделать POST запрос с данными, необходимыми для авторизации.
Как парсить данные с сайта, который требует авторизации.
Офлайн
Можно пример какой нибудь, например для сайта Ярушки (ya.ru). Из за авторизации точнее ее отсутствия много информации не видно.
Можно пример какой то с использованием авторизованного запроса.
Офлайн
headers = {
'Host': HOST,
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'ru,en-us;q=0.7,en;q=0.3',
'Accept-Encoding': 'deflate',
'Accept-Charset': 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Keep-Alive': '115',
'Connection': 'keep-alive',
'Cookie': 'lang=english',
'Cache-Control': 'max-age=0',
'Content-Type': 'application/x-www-form-urlencoded',
}
cred_data = {}
cred_data['login'] = login
cred_data['password'] = password
body = urllib.urlencode(cred_data)
headers['Content-Length'] = str(len(body))
conn = httplib.HTTPConnection("%s:%s" % (HOST,PORT,))
conn.request("POST", cred_url, body, headers)
response = conn.getresponse()
cookie = response.getheader('set-cookie', '')
conn.close()
headers['Cookie'] = cookie
conn = httplib.HTTPConnection("%s:%s" % (HOST,PORT,))
headers['Content-Length'] = 0
conn.request("GET", data_url, "", headers)
response = conn.getresponse()
data = response.read()
conn.close()
Офлайн
Спасибо)
Офлайн