1.重定向
import urllib.request
"""判断有没有重定向"""
response = urllib.request.urlopen("http://www.baidu.cn")
print(response.geturl()=="http://www.baidu.cn")
class RedirectHander(urllib.request.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):#302重定向
#重定向之后的网页
res = urllib.request.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, headers)
res.status = code#返回的编码
res.newurl = res.geturl()#当前的url
return res #返回重定向之后的网页
opener =urllib.request.build_opener(RedirectHander)#一个网页的对象
opener.open("http://www.baidu.cn")
2.图片下载
import urllib.request
urllib.request.urlretrieve("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1577726302002&di=a70b97aaf3652a3fde18dbe21368d0b2&imgtype=0&src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2F8f%2F0d%2Fec%2F8f0decd39d3644ef0953319cd292ef5d.jpg","绿巨人.jpg")
结果:
3.解决加密
import urllib.request
import urllib.parse
import ssl#解决加密
context = ssl._create_unverified_context()#忽略安全
url = "https://www.baidu.com"
headers ={"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request,context=context)
print(response.read().decode("utf8"))
4.模拟登录 cookies
import urllib.request
from http import cookiejar
import urllib.parse
#创建一个cookie对象
cookie = cookiejar.CookieJar()
cookie_handle = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(cookie_handle)
headers =[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36')]
opener.addheaders = headers
loginurl = "http://www.renren.com/Plogin.com"
data = {"email":"xxxxx","password":"xxxxxx"}
data = urllib.parse.urlencode(data).encode("utf8")
request = urllib.request.Request(loginurl,data=data)
response = opener.open(request)#载入cookie,登录
response_index = opener.open("自身主页地址")
print(response_index.read().decode("utf8"))