Подтвердить что ты не робот

Как отправить HTTP-запрос в Python?

У меня возникли проблемы с отправкой данных на веб-сайт и получением ответа на Python. Я видел подобные вопросы, но ни один из них, похоже, не выполняет то, к чему я стремился.

Если вы можете прочитать это, вы можете увидеть, что я пытаюсь сделать в Python (Это в С#)

    static void Request(Uri selectedUri)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(selectedUri);
        request.ServicePoint.BindIPEndPointDelegate = BindIPEndPointCallback;
        request.Method = "GET";
        request.Timeout = (int)Timeout.TotalMilliseconds;
        request.ReadWriteTimeout = (int)Timeout.TotalMilliseconds;
        request.CachePolicy = CachePolicy;
        request.UserAgent = UserAgent;

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader responseReader = new StreamReader(response.GetResponseStream()))
            {
                string responseText = responseReader.ReadToEnd();
                File.WriteAllText(UrlFileName, responseText.Trim(), Encoding.ASCII);
            }
        }
     }

В этом коде выше установлен Http-запрос, отправляющий все найденное в потоке ответа в направлении URL-адреса, найденного в UrlFileName.

Вот моя попытка воссоздать это в Python:

def request():
web = httplib.HTTPConnection('https://minecraft.net');
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
web.request("GET", "/heartbeat.jsp", headers);
response = web.getresponse();
stream = ""; #something is wrong here

Я не уверен, что даже создаю запрос, а тем более не могу создать Stream Reader ответа на отправку данных. Любая помощь будет оценена! Пожалуйста, детализируйте, поскольку я очень новичок в синтаксисе Python.

4b9b3361

Ответ 1

Вы можете использовать urllib2

import urllib2
content = urllib2.urlopen(some_url).read()
print content

Также вы можете использовать httplib

import httplib
conn = httplib.HTTPConnection("www.python.org")
conn.request("HEAD","/index.html")
res = conn.getresponse()
print res.status, res.reason
# Result:
200 OK

или запрашивает библиотеку

import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
r.status_code
# Result:
200

Ответ 2

В Python вы можете использовать urllib2 (http://docs.python.org/2/library/urllib2.html), чтобы выполнить всю эту работу за вас.

Просто достаточно:

import urllib2
f =  urllib2.urlopen(url)
print f.read() 

Выведет полученный HTTP-запрос.

Для передачи параметров GET/POST можно использовать функцию urllib.urlencode(). Для получения дополнительной информации вы можете обратиться к Official Urllib2 Tutorial