原始request请求模式
1、直接通过url地址获取请求响应(www.baidu.com)
导入引用包:import urllib.request
respone=urllib.request.urlopen(url)
2、读取响应里的数据(直接读取数据为二进制,通过.decode()方法进行转换)
respone.read().decode("utf-8")
3、当url地址含有参数时("http://www.baidu.com/s?ie=utf8&wd=美女") from urllib import parse
字典参数时params={"wd":"中文"},要进行转换
url_parmas=urllib.parse.urlencode(params)
拼接url地址
finnal_url=url+url_parmas
将包含汉子网址进行转换
new_url=urllib.parse.quote(finnal_url,safe=string.printable)
通过urllib.request.urlopen(new_url)获取响应数据
4、在url地址中添加响应头
请求头信息 header={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0","key":"value"}
添加请求头信息:request=urllib.request.Request(url,headers=header)
添加指定请求头:request=urllib.request.Request(url),request.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0")
通过urllib.request.urlopen(request)获取响应数据
5、添加IP代理
系统urllib.request.urlopen()不支持ip代理,要自建添加
代理IP格式:免费写法 proxy={"http":"117.95.214.13:9999"}
收费写法:proxy={"http":"username:pwd@117.95.214.13:9999"} 或者
创建代理处理器:proxy_handler=urllib.request.ProxyHandler(proxy)
创建opener:proxy_opener=urllib.request.build_opener(proxy_handler)
发送代理IP请求获取响应:respones=proxy_opener.open(url)
6、付费添加IP代理
创建密码管理器:pwd_manage=urllib.request.HTTPPasswordWithDefaultRealm()
添加用户名密码:pwd_manage.add_password(None,IP,user,pwd)
创建验证代理IP处理器:handler_auth_proxy=urllib.request.ProxyBasicAuthHandler(pwd_manage)
创建opener:opener=urllib.request.build_opener(handler_auth_proxy)
发送请求获取响应数据:response=opener(url)
7、cookiejar 使用 from http import cookiejar
通过post请求自动保存cook,下次直接带cook请求
构建用户参数 login_post={
"username": "715512020@qq.com",
"pwd": "341621syl@*",
"formhash": "69AE86D054",
"backurl": "https%3A%2F%2Fwww.yaozh.com%2F"
}
请求头参数
header={
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Mobile Safari/537.36"
}
添加用户登录参数:login_parse=urllib.request.urlencode(login_post).encode("utf-8")
添加请求头及参数:request=urllib.request.Request(url,headers=header,data=login_parse)
创建cookjar对象实例自动保存cook
cook_jar=cookjar.CookJar()
创建cookie处理器对象
cook_handler=urllib.request.HTTPCookieProcessor(cook_jar)
创建opener:cook_opener=urllib.request.build_opener(cook_handler)
发送请求:response=cook_opener(request)
cook信息已自动保存到cook_jar对象实例中
再次访问网站时通过cook
cook_opener(url)