Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Парсить значения на сайте с оповещением об изменении данных [RSS Feed]

#1 Апрель 14, 2011 23:10:32

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

Задумался над реализацией следующего кода.
Нужно написать скрипт, который бы отслеживал изменения конкретного значения на сайте (в определенном хтмл теге) например курс валюты, температуры или чего то другого.

Интересует конкретно реализация работы такого скрипта, чтобы при запуске его из консоли скажем, он работал и выводил сообщение об изменениях в значение, которое парсится или отправлял сообщение на личную почту.



Офлайн

#2 Апрель 14, 2011 23:39:12

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

1. Получаем хтмл код - urllib.urlopen
2. Парсим из него нужные значения (неоднократно обсуждалось на этом форуме)
3. Отличаются ли они от предыдущих
Если да
4. Сохраняем значения
5. Посылаем письмо об этом - smtplib
6. ПРОФИТ

Какой из этих пунктов вызывает затруднения?



Офлайн

#3 Апрель 14, 2011 23:59:59

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

А как разместить скрипт в директории сайта, чтобы можно было прикрутить ему веб интерфейс с парой кнопочек для запуска и остановки ну и чтобы выводилось значение (которое парсили) на странице.
Что тут почитать, использовать?



Офлайн

#4 Апрель 15, 2011 04:09:06

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

>А как разместить скрипт в директории сайта, чтобы можно было прикрутить ему веб интерфейс
раз есть какой-то сайт на который нужно выводить, то я бы просто выкусывал нужный html (запуск по крону, либо демоном), ложил в файлик, а движок сайта при отрисовке страницы его вставлял бы куда надо.

Офлайн

#5 Апрель 15, 2011 11:43:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

“А как разместить скрипт в директории сайта”
Не очень понятно в чем проблема? Те это сайт ваш или в интернете, из которого изменения? я так понял что в интернете.
Кроме сказанного o7412369815963 я бы добавил что вы наверное захотите отслеживать несколько значений. Соответственно система должна включать
1 базу идентификаторов того что вы хотите мониторить. Наверное список пар - url+ regex или кусок кода для выделения значения из странички и наверное символьное название чтобы не запутаться.
2 базу истории изменения этих параметров, или по крайней мере прошлое значение.
Система не очень сложная помоему, но требует аккуратной реализации (учитывая автозапуск и синхронизацию при добавлении новых контролируемых адресов).
Поэтому лучше если вы приведете ваши попытки. Можете писать в личку если что.



Офлайн

#6 Апрель 16, 2011 19:22:52

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

Тогда такой вопрос:
Как парсить данные с сайта, который требует авторизации. То есть чтобы просмотреть информацию нужно ввести логин и пароль. Без авторизации ничего интересного не увидишь. Как парсить данные с авторизацией в запросе? Подскажите какие нибудь простые и проверенные способы?



Офлайн

#7 Апрель 16, 2011 20:23:53

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

esal
Как парсить данные с сайта, который требует авторизации.
Очень просто - обычно авторизация основана на куках (если там Basic или Digest авторизация - то все намного проще), поэтому достаточно просто хранить и передавать куки между запросами. Ну и соответственно сделать POST запрос с данными, необходимыми для авторизации.



Офлайн

#8 Апрель 16, 2011 21:33:02

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

Можно пример какой нибудь, например для сайта Ярушки (ya.ru). Из за авторизации точнее ее отсутствия много информации не видно.
Можно пример какой то с использованием авторизованного запроса.



Офлайн

#9 Апрель 16, 2011 21:57:52

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

    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()



Офлайн

#10 Апрель 16, 2011 22:33:06

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсить значения на сайте с оповещением об изменении данных

Спасибо)



Офлайн

  • Начало
  • » Web
  • » Парсить значения на сайте с оповещением об изменении данных[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version