python内置http请求库urllib基本使用,发送请求,添加请求头,添加cookie信息

urllib是python自带标准库,可直接使用

引入用到的module

import urllib.request #发送请求
import urllib.parse 
import http.cookiejar #cookie

发送get请求

#汉字或者会隔断url的特殊字符需要用urllib.request.quote(),url编码
#http://localhost/get,springboot快速搭建个get接口@GetMapping(value = "get")
response = urllib.request.urlopen('http://localhost/get?data=getRequest')
#返回参数读取
print(response.read().decode('utf-8'))
#响应状态
print(response.status)
#响应头信息
print(response.headers)

发送post请求

#请求参数
param = bytes(urllib.parse.urlencode({
     "data": "post"}), "utf-8")
response = urllib.request.urlopen("http://localhost/post", param)
print(response.read().decode('utf-8'))

使用urllib.request.Request()添加请求信息

#自定义头信息
headers = {
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"}
param = bytes(urllib.parse.urlencode({
     "data": "hello"}), "utf-8")
#request中放入参数,请求头信息
request = urllib.request.Request("http://localhost/post", param, headers)
#urlopen打开链接(发送请求获取响应)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

ip代理urllib.request.ProxyHandler

#请求参数 data=handler
data = bytes(urllib.parse.urlencode({
     "data": "handler"}), "utf-8")
#自定义头信息
headers = {
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"}
#urllib.request.ProxyHandler创建ip代理handler
http_proxy_handler = urllib.request.ProxyHandler({
     "http": "61.135.186.243:80"})
#无代理设置
#http_proxy_handler = urllib.request.ProxyHandler({}) 
#build_opener创建opener对象,传入http_proxy_handler
opener = urllib.request.build_opener(http_proxy_handler)
#请求对象,放入请求参数,请求头等信息
request = urllib.request.Request("http://www.baidu.com", data=data, headers=headers)
#只有opener.open()才会使用,urlopen()不会使用代理,将opener应用全局两种方式都会使用代理
response = opener.open(request)
print(response.read().decode('utf-8'))
#将opener应用全局
#urllib.request.install_opener(opener)
#response = urllib.request.urlopen(request)
#print(response.read().decode('utf-8'))

免费IP代理:

66免费代理网 http://www.66ip.cn/
全网代理IP(有免费的代理) http://www.goubanjia.com
云代理 http://www.ip3366.net
快代理(有免费的代理) https://www.kuaidaili.com
免费代理IP库 http://ip.jiangxianli.com

获取响应返回的cookie信息,保存本地、读取。CookieJar,HTTPCookieProcessor

获取cookie信息:

http.cookiejar.CookieJar创建一个CookieJar用来保存cookie

获取cookie信息

cookiejar = http.cookiejar.CookieJar()
#使用HTTPCookieProcessor来创建cookie处理对象handler
handler = urllib.request.HTTPCookieProcessor(cookiejar)
#通过build_opener构建opener,传入cookie处理对象handler
opener = urllib.request.build_opener(handler)
#访问url,访问后会自动保存cookie到cookiejar对象中
opener.open("http://www.baidu.com")
#cookie信息字符串
cookie = ''
for c in cookiejar:
    cookie = cookie + c.name + "=" + c.value + ";"
#cookie[:-1] 去除最后一位
print(cookie[:-1])
#再用opener.open()发送请求会带着这个cookie信息

cookie信息保存到本地文件中

# 文件地址,文件不存在cookiejar.save()会自动创建
fileName = "C:\\Users\\zqq\\Desktop\\cookie\\cookie1.txt"
#MozillaCookieJar创建cookiejar, cookiejar.save()
cookiejar = http.cookiejar.MozillaCookieJar(fileName)
#使用HTTPCookieProcessor来创建cookie处理对象handler
handler = urllib.request.HTTPCookieProcessor(cookiejar)
#通过build_opener构建opener
opener = urllib.request.build_opener(handler)
#访问url,访问后会自动保存cookie到cookiejar对象中
opener.open("http://www.baidu.com")
cookie = ''
for c in cookiejar:
    cookie = cookie + c.name + "=" + c.value + ";"
#输出cookie信息
print(cookie[:-1])
#cookiejar.save()保存文件
cookiejar.save()

读取文件中cookie信息

cookiejar = http.cookiejar.MozillaCookieJar()
#cookiejar.load()加载cookie信息,此时在使用cookiejar会带着文件中的cookie信息
cookiejar.load("C:\\Users\\zqq\\Desktop\\cookie\\cookie1.txt")

你可能感兴趣的:(Python,python,http,cookie)