首页 > 编程知识 正文

Python httplib urllib 如何实现网络请求

时间:2023-11-20 08:18:57 阅读:302947 作者:EWDB

本文将从以下几个方面详细阐述Python httplib和urllib库的使用:网络请求、请求头定制和处理响应。

一、网络请求

httplib和urllib库是Python用于实现网络请求的两个常用库,提供了丰富的方法和类来发送HTTP请求并处理响应。

1. 简单GET请求示例

import httplib

conn = httplib.HTTPConnection("www.example.com")
conn.request("GET", "/")
res = conn.getresponse()

print(res.status, res.reason)
print(res.read())

conn.close()

上述代码首先通过HTTPConnection建立与目标服务器的连接,然后使用request方法发送GET请求,最后获取响应并输出。

2. 带参数的GET请求示例

import urllib

params = urllib.urlencode({"param1": "value1", "param2": "value2"})
conn = httplib.HTTPConnection("www.example.com")
conn.request("GET", "/path?" + params)

# 同样可以使用conn.getresponse()获取响应等操作

通过urllib.urlencode方法将参数编码后,可以直接拼接到GET请求的URL上,实现带参数的GET请求。

二、请求头定制

在使用httplib和urllib发送请求时,可以定制请求头来模拟不同的请求。以下示例展示了如何添加请求头信息。

1. 请求头定制示例

import httplib

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}

conn = httplib.HTTPConnection("www.example.com")
conn.request("GET", "/", headers=headers)

# 同样可以使用conn.getresponse()获取响应等操作

上述示例中,使用headers参数来定制请求头信息,并在请求时传入。

2. Cookie设置示例

import urllib
import urllib2
  
# 使用CookieJar对象管理Cookie
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

# 向服务器发送请求
response = urllib2.urlopen("http://www.example.com")

在这个示例中,我们使用了urllib2库,并通过CookieJar对象进行Cookie的管理。

三、处理响应

httplib和urllib库不仅可以发送请求,还可以处理响应。以下示例展示了如何获取响应的状态码、响应头和响应内容。

1. 获取响应状态码和内容示例

import httplib

conn = httplib.HTTPConnection("www.example.com")
conn.request("GET", "/")
res = conn.getresponse()

print(res.status, res.reason)
print(res.read())

conn.close()

示例中使用getresponse方法获取响应,通过status和reason属性可以获取状态码和状态信息,通过read方法可以获取响应内容。

2. 获取响应头示例

import httplib

conn = httplib.HTTPConnection("www.example.com")
conn.request("GET", "/")
res = conn.getresponse()

print(res.getheaders())

conn.close()

在上述示例中,使用getheaders方法获取响应头信息。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。