如何在 Python 中发送 HTTP Get Web 请求? [复制]
Posted
技术标签:
【中文标题】如何在 Python 中发送 HTTP Get Web 请求? [复制]【英文标题】:How do you send an HTTP Get Web Request in Python? [duplicate] 【发布时间】:2013-06-15 05:37:51 【问题描述】:我无法将数据发送到网站并在 Python 中获得响应。我见过类似的问题,但似乎都没有达到我的目标。
这是我尝试移植到 Python 的 C# 代码:
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);
这是我在 Python 中的尝试:
def request():
web = httplib.HTTPConnection('https://someurl.com');
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
任何帮助将不胜感激!
【问题讨论】:
***.com/questions/645312/… 该问题是在请求库存在之前发布的。 【参考方案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
或requests library
import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
r.status_code
# Result:
200
【讨论】:
啊,我遇到的一个问题是我需要使用 httplib 发送请求。谢谢! httplib 模块在 Python 3.0 中已重命名为 http.client 在 Python 3 中,将urllib2
替换为 urllib.request
。【参考方案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
【讨论】:
所以,我可以输入“print urllib2.urlopen(url, array of data).read()”? 是的。 read() 函数的输出是一个字符串,您可以打印、分配给变量等 在 Python 3 中,将urllib2
替换为 urllib.request
。以上是关于如何在 Python 中发送 HTTP Get Web 请求? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用SOCKET 发送HTTP1.1 GET POST请求包
python+pytest接口自动化-requests发送get请求