requests和urllib的区别

基本的区别是获得的response

requests

一、发送请求

1.发送get请求,例如:

r = requests.get('http://httpbin.org/ip')

2.发送post请求,例如:

r = requests.post('http://httpbin.org/ip')

3.得到的响应内容(就是指get发送以后的请求),响应的内容包含响应行、响应报头、响应正文

响应正文:r.content(通用版),可以自动转出成取文本用.text,取图片等二进制的文件用.content,.text返回的是unicode型数据,.content返回的是bytes类型的数据,也就是二进制的数据。

url = "http://www.baidu.com/"
r = requests.get(url, timeout=10)
print(r.content)

requests和urllib的区别_第1张图片

响应头部:r.header

url = "http://www.baidu.com/"
r = requests.get(url, timeout=10)
print(r.headers)

如果要反爬虫,一个方法时伪装头部

Requests支持定制http请求的头部。为此,我们只需要构造一个字典,然后传给requests.get()的headers参数即可。

url = 'http://httpbin.org/headers'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
print (r.text)

响应状态码

url = "http://www.baidu.com/"
r = requests.get(url, timeout=10)
print(r.status_code)

二、发送请求

以后再补充

r = requests.post('http://httpbin.org/post', data={'name': 'leo'})

具体参考https://blog.csdn.net/qq_29027865/article/details/84554748

urllib.request

http请求方法

GET    向指定url发送请求,返回网页的html代码
POST    向指定url提交数据,由服务端进行处理并返回结果。

请求和响应过程

1    客户端(浏览器)解析URL地址,将域名转换成IP
2    客户端(浏览器)与服务端(服务器)建立TCP/IP连接
3    客户端(浏览器)发送http请求
请求报文包括请求行(请求方式、URL、协议版本)、
请求头部、空行和请求数据
4    服务端(服务器)响应请求返回数据
响应报文包括状态行、消息报头、空行和响应正文
5    服务端(服务器)释放TCP连接
6    客户端(浏览器)解析返回的数据并显示

一、发送请求

1.发送get请求

urllib.request.urlopen()

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

其中url:  需要打开的网址      data:Post提交的数据     timeout:设置网站的访问超时时间

response=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)

响应正文:read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作。

import requests
from urllib import request
from urllib.request import urlopen
url = "http://www.baidu.com/"
r = request.urlopen(url, timeout=10)
print(r.read())

也可以编码r.read().decode("UTF_8")

响应头部:info()

import requests
from urllib import request
from urllib.request import urlopen
url = "http://www.baidu.com/"
r = request.urlopen(url, timeout=10)
print(r.info())

响应状态码:getcode()

import requests
from urllib import request
from urllib.request import urlopen
url = "http://www.baidu.com/"
r = request.urlopen(url, timeout=10)
print(r.getcode())

 

你可能感兴趣的:(python)