Найти - Пользователи
Полная версия: python 2.7 отправить post или get запрос
Начало » Python для новичков » python 2.7 отправить post или get запрос
1 2
hostdjango
Нужно для реализации пинга к яндесу для сайта

Пример 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()
Это правильно? Как проверить что яндекс принял запрос?
Budulianin
hostdjango
Как проверить что яндекс принял запрос?

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

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

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

Что такое HTTP.

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

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

Скажите лучше пожалуйста, что делать с GET /ping.xml? или это не надо использовать?
Budulianin
hostdjango
Знаю
Знал бы, тогда не спрашивал.

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

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

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

параметр при POST нужно передать только один - urls
hostdjango
Budulianin, ну вот мне вернуло 200, потом я решил посмотреть гипертекст, а там просто
http://urls
Что-то мне это не нравится, разве нельзя было вывести что-то типа “success, you url example.com pinged”?
Именно поэтому я больше и спрашивал,
Как проверить что яндекс принял запрос?
hostdjango
Сам яндекс ничего не пишет… http://help.yandex.ru/site/optimizing.xml#http
Budulianin
hostdjango
потом я решил посмотреть гипертекст
Какой гипер текст? Может ответ?

Если 200 отдаёт, то скорее всего Яндекс всё понял. Уточни у техподдержки, они без проблем ответят, что должно прийти в ответ.
hostdjango
Какой гипер текст? Может ответ?
Ну в ответе же содержится гипертекст страницы. Т.е. page = urlopen(…).read() возвращает гипертекст в строке.
Если 200 отдаёт, то скорее всего Яндекс всё понял. Уточни у техподдержки, они без проблем ответят, что должно прийти в ответ.
Ответ платонов нужно минимум неделю ждать, а мне нужно побыстрее сделать(((
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB