Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2014 20:14:25

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Нужно для реализации пинга к яндесу для сайта

Пример GET-запроса на индексацию:
GET /ping.xml?key=b11f3e1d35a1a01cb009a19dcf8f259b4bcaaf33 /
&login=some_login&search_id=43210123 /
&urls=example.com/about%0Aexample.com/contacts HTTP/1.1
Host: site.yandex.ru

Пример POST-запроса на индексацию:
POST /ping.xml?key=b11f3e1d35a1a01cb009a19dcf8f259b4bcaaf33&login=some_login&search_id=43210123 HTTP/1.1
Content-type: application/x-www-form-urlencoded
Host: site.yandex.ru
Content-Length: 45 #размер urlencoded данных ниже

urls=example.com/about%0Aexample.com/contacts
Какой легче реализовать с помощью urllib? Не понимаю собственно как реализовать. Никогда не приходилось.
Допустим я хочу реализовать get запрос. Сначала нужно создать список параметров. Похоже это key, login,urls и search_id (потом поменяю на свои значения)
params = { 'key': 'b11f3e1d35a1a01cb009a19dcf8f259b4bcaaf33', 'login': 'some_login', 'urls': 'site.ru', 'search_id":'43210123' }
Непонятно только что делать с POST /ping.xml? и HTTP/1.1
Указываем url куда будем посылать запрос, это Host: site.yandex.ru
Получается так:
import urllib
import urllib2
params = { 'key': 'b11f3e1d35a1a01cb009a19dcf8f259b4bcaaf33', 'login': 'some_login', 'urls': 'site.ru', 'search_id":'43210123' }
url = 'site.yandex.ru'
req = urllib2.Request(url + urllib.urlencode(params), headers={ 'User-Agent': 'Mozilla/5.0', 'Accept-Charset': 'utf-8' })
    page = urllib2.urlopen(req).read()
Это правильно? Как проверить что яндекс принял запрос?

Отредактировано hostdjango (Авг. 29, 2014 20:16:41)

Офлайн

#2 Авг. 29, 2014 21:08:15

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

hostdjango
Как проверить что яндекс принял запрос?

Вообще-то в спецификацию HTTP заложено, что сервер должен дать ответ.
Понимаешь?

Прочитай, что должен отдать этот метод
urllib2.urlopen(req)

Тебе будет легче с requests

Что такое HTTP.

Так же, если ты не будешь лениться, то найдёшь много примеров использования urllib2.



Отредактировано Budulianin (Авг. 29, 2014 21:43:25)

Офлайн

#3 Авг. 29, 2014 21:49:28

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Вообще-то в спецификацию HTTP заложено, что сервер должен дать ответ.
Понимаешь?
Знаю, просто не думал что дополнительные методы для проверки статуса ответа есть, думал что только гипертекстовая строка возвращается.

Тебе будет легче с requests
Слабая библиотека, скудная документация, +для моей маленькой задачи не хочется тащить стороннюю библиотеку

Скажите лучше пожалуйста, что делать с GET /ping.xml? или это не надо использовать?

Офлайн

#4 Авг. 29, 2014 21:55:10

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

hostdjango
Знаю
Знал бы, тогда не спрашивал.

hostdjango
скудная документация
Норм всё с документацией.

hostdjango
Слабая библиотека
Тебе всего два запроса отправить. Но так как ты не можешь осилить urllib2,
то есть более абстрактная либа.

hostdjango
GET /ping.xml? или это не надо использовать?
Ну тебе Яндекс предлагает API
Либо POST слать либо GET, тебе уже решать.
(результат будет один и тот же)



Отредактировано Budulianin (Авг. 29, 2014 21:57:08)

Офлайн

#5 Авг. 29, 2014 22:04:17

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Либо POST слать либо GET, тебе уже решать.
Это я понимал, я в первом сообщении спрашивал какой метод легче использовать (решил что get), я не знаю, нужно ли использовать /ping.xml? где-то в параметре.

Отредактировано hostdjango (Авг. 29, 2014 22:04:55)

Офлайн

#6 Авг. 29, 2014 22:17:51

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

hostdjango
спрашивал какой метод легче использовать
Вообще без разницы.

параметр при POST нужно передать только один - urls



Офлайн

#7 Авг. 29, 2014 22:32:45

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Budulianin, ну вот мне вернуло 200, потом я решил посмотреть гипертекст, а там просто

http://urls
Что-то мне это не нравится, разве нельзя было вывести что-то типа “success, you url example.com pinged”?
Именно поэтому я больше и спрашивал,
Как проверить что яндекс принял запрос?

Офлайн

#8 Авг. 29, 2014 22:34:14

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Сам яндекс ничего не пишет… http://help.yandex.ru/site/optimizing.xml#http

Офлайн

#9 Авг. 29, 2014 22:48:09

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

hostdjango
потом я решил посмотреть гипертекст
Какой гипер текст? Может ответ?

Если 200 отдаёт, то скорее всего Яндекс всё понял. Уточни у техподдержки, они без проблем ответят, что должно прийти в ответ.



Офлайн

#10 Авг. 29, 2014 22:53:42

hostdjango
Зарегистрирован: 2014-08-29
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.7 отправить post или get запрос

Какой гипер текст? Может ответ?
Ну в ответе же содержится гипертекст страницы. Т.е. page = urlopen(…).read() возвращает гипертекст в строке.
Если 200 отдаёт, то скорее всего Яндекс всё понял. Уточни у техподдержки, они без проблем ответят, что должно прийти в ответ.
Ответ платонов нужно минимум неделю ждать, а мне нужно побыстрее сделать(((

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version