urllib库中的request模块主要负责构造和发起网络请求,并在其中添加headers,proxy等,利用它可以模拟浏览器的请求过程
request的请求流程
①发起网络请求
②添加headers
③操作cookies
④使用代理proxy
代码演示:
#导包 from urllib import request #生成user-agent from fake_useragent import UserAgent user_agent = UserAgent() ua = user_agent.random #放入请求头 headers ={"user-agent":"ua"} url = "http://******.com/" #发起请求 req = request.Request(url,headrs =headers) #结果返回使用urlopen方法 res = request.urlopen(req)
读取结果
res.read() #只读一次 res.readline() #只读一行 res.info() #获取响应头 res.geturl() #获取url res.getcode() #获取状态码 print(res.read())
操作cookies
#导包 from htttp import cookiejar #创建cookie对象 coookie = cookiejar.Cookiejar.CookieJar() #创建cookie处理器 cookie1 = request.HTTPCookieProcessor(cookie) opener= request.build_opener(cookie1) res =opener.open(url) print(res.read())
设置代理
proxy = {"http":"192.168.3.1"} request.ProxyHandler(proxy)
pase.quote方法
from urllib import parse url = ‘http://httpbin.org/get?aaa={}‘ url1 = url.format(parse.quote(‘爬虫‘))
print(url1)
#http://httpbin.org/get?aaa=%E7%88%AC%E8%99%AB parse.quote对url进行了编码 # parse.unquote对url解码
robots.txt协议 爬虫违反此协议