urllib的实现---请求响应and请求头处理

Posted 成长日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了urllib的实现---请求响应and请求头处理相关的知识,希望对你有一定的参考价值。

在python3中 urllib库和urilib2库合并成了urllib库。。
其中urllib2.urlopen()变成了urllib.request.urlopen()
urllib2.Request()变成了urllib.request.Request()

 1,实现一个完整的请求和响应模型

import urllib
#请求
request = urllib.request.Request(https://www.baidu,com)
#响应
response = urllib.request.urlopen(request)
html = response.read()
print(html)
 

post请求

import urllib
from urllib import parse
from urllib import request


url = https://www.xxx.com/login
postdata = {username: qwe,
            password: qwe123

}
#info 需要被编码成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url,data)
response = request.urlopen(req)
html = response.read()

2.请求头headers处理

将上面的代码修改,设置一下请求头中的User-Agent域和Referer域信息

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

from urllib import parse
from urllib import request


url = https://www.xxx.com/login
url_agent = Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1
referer = http://www.xxxx.com/
postdata = {username: qwe,
            password: qwe123

}
header = {User-Agent: url_agent,Referer: referer}
#info 需要被编码成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url,data,header)
response = request.urlopen(req)
html = response.read()

也可以使用add_header来添加修改如下

from urllib import parse
from urllib import request


url = https://www.xxx.com/login
url_agent = Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1
referer = http://www.xxxx.com/
postdata = {username: qwe,
            password: qwe123

}
#header = {‘User-Agent‘: url_agent,‘Referer‘: referer}
#info 需要被编码成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url)
req.add_header(User-Agent,url_agent)
req.add_header(Referer,referer)
req.data = data
response = request.urlopen(req)
html = response.read()

 

以上是关于urllib的实现---请求响应and请求头处理的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫编程思想:用urllib处理请求超时

Urllib库基本使用

HTTP请求的python实现(urlopenheaders处理 Cookie处理设置Timeout超时 重定向Proxy的设置)

python 爬虫学习第一课

Python爬虫:urllib3与urllib到底有何区别?内行人告诉你答案

爬虫基础框架 之urllib --- urllib post请求