LINUX.ORG.RU

Отслеживание посылок Почты России, как автоматизировать?


0

2

Доброго времени суток, думаю реализовать мыслишку. Хочу автоматизировать проверку статуса посылки на трекере почты РФ\http://russianpost.ru/rp/servise/ru/home/postuslug/trackingpo Вопорс в том, как это дело организовать, если бы это была просто страничка, то можно было бы скажем её распарсить и найти нужную мне информацию, но такм на страничке кнопка и поле ввода кода, т.е ег онужно сначало ввести, потом нажать кнопку, не могу понять как это дело организовать, как вообще должен быть устроен скрипт, его алгоритм? Направьте на путь истинный. Делаться будет на Python :)

★★★★★

Последнее исправление: xterro (всего исправлений: 1)

gps жэ, ну

anonymous
()

изучите какие http запросы идут к серверу и пишите программу,которая и будет посылать их с нужными параметрами+ разбирать ответ

pylin ★★★★★
()
Ответ на: комментарий от pylin

Нет там никаких запросов, заходишь на страничку, в поле ввода вводишь номер, нажимаешь кнопку и всё, на этой же страничке, внизу появляется html табличка с нужной информацией :-/

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Да, и api у них походу никакого нет (

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Запросы обязательно есть,святым духом передавать данные пока не научились, так что сниффер в руки и вперед. Вполне возможно что запрос идет методом POST, а потому никаких параметров не передается в строке адреса

pylin ★★★★★
()
Ответ на: комментарий от xterro

При нажатии на кнопку должно что-то отправляться на сайт, иначе как бы он узнал что тебе пора показать статистику по посылке

HighwayStar ★★★★★
()
Ответ на: комментарий от xterro

Делаться будет на Python :)

Нет там никаких запросов

Что-то низковат порог входа у питона. Как дельфя какая-то.

O02eg ★★★★★
()
Ответ на: комментарий от pylin

Сами посудите: вы клиент, общаетесь с сервером при помощи браузера, по сути дела передаете данные через форму(да конечно весьма простенькую), а какой протокол отвечает за передачу данных через формы в том числе и универсален для интернета? HTTP

pylin ★★★★★
()
Ответ на: комментарий от O02eg

Python просто как инструмент, я думал там всё просто, нужно получить страничку ,распарсить её, выдрать все нужные данные, атут методы POST надо использовать

xterro ★★★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

Почему-же, я могу поочери вбивать в поле ввода несколько номеров по очереди и смотреть состояние по ним

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Сниффер, если есть firefox, то может найдете какое-нибудь расширение, записывающее http запросы и ответы

pylin ★★★★★
()
Ответ на: комментарий от Unnamed_Hero

Маразм как он есть:) А если через проксю или уж совсем извращаться и обернуть ТОРом, для отладки запросов

pylin ★★★★★
()

Возьми фаерфокс и плагин к нему - фаербаг(можно и оперой воспользоваться). И, по этому адресу - используется POST запрос.

smap
()
Ответ на: комментарий от smap

Я скачал плагин HttpRequester, в нём вбил адрес трекера, но по сути по методу:

POSThttp://russianpost.ru/rp/servise/ru/home/postuslug/trackingpo
Но от тупо возвращает код страницы (

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

А ведь чтобы получить нужные данные, на странице нужно нажать в форме, в поле value ввести код и нажать кнопку. А как это автоматически сделать? Ведь только после нажатия кнопки, выдаются необходимые данные.

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Возьмите firebug введите нужный номер, посмотрите какой запрос будет послан и ответ. В запросе должен быть параметр. Возможно поможет изучение имени поля ввода в исходниках страницы

pylin ★★★★★
()
Ответ на: комментарий от xterro

В POST запросе необходимо передать требуемые кортежы «ключ/значение». Установи wget и пропиши в коммандной строке: wget --post-data «pathcur=rp/servise/ru/homw/postuslug/trackingpo&cday=29&cmonth=04&cyear=2012&pathweb=/rp/index/ru/home&pathpage=rp/index/ru/home/search&barcode=11512780151384&searchsign=1» http://russianpost.ru/resp_engine.aspx?Path=rp/servise/ru/home/postuslug/trac...

11512780151384 - это почтовый айди. В ответ придет страница с информацией о статусе почтового отправления.

smap
()
Ответ на: комментарий от xterro

А далее по аналогии, используй библиотеку для твоего языка, предоставляющую функционал для передачи данных с поддержкой http. Для C например, это могла бы быть библиотека curl.

smap
()
Ответ на: комментарий от pylin

Понял, спасибо, буду разбираться )

xterro ★★★★★
() автор топика
Ответ на: комментарий от JFreeM

Для меня вообще всё что связано с Web, web-серверами, это что-то страшное и непонятное O_o Вот, исправляю )

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Организовал я POST, запрос, прописал параметры запроса, отправил его на сервер, но мне вернулась страница явно без необходимых мне данных, что может быть не так? Вот сценарий:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import httplib
from datetime import date

today = date.today()

tracker_url = "www.russianpost.ru/rp/servise/ru/home/postuslug/trackingpo"
tracker_file = "tracks.txt"

tracks = [track.strip() for track in open(tracker_file, "r").readlines()]

conn = httplib.HTTPConnection("www.russianpost.ru")
for track in tracks:
	params = urllib.urlencode({	'@pathcur':'rp/servise/ru/homw/postuslug/trackingpo', 
							'@cday':today.day, '@cmonth':today.month, '@cyear':today.year, 
							'@pathweb':'/rp/index/ru/home', 
							'@pathpage':'rp/index/ru/home/search', 
							'@barcode':track, 
							'@searchsign':'1'})
	headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
	conn.request("POST", "", params, headers)
	response = conn.getresponse()
	resp = response.read()
	print resp

conn.close()
xterro ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Это параметры POST запроса, правда эта тема так и не заработала. Переделал на http://www.prishlo.li, там проще

www.prishlo.li/<id> - id - номер отправки

В ответ придёт страница с инфой, теперь осталось узнать как выдрать нужную мне информацию?

xterro ★★★★★
() автор топика

Server Microsoft-IIS/6.0

Вот она - отечественная почта ☺

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Эээ, а кто говорит о сервере? В данном топике речь идет о стандартном взаимодействии «клиент-сервер»

pylin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.