Python3爬虫系列整理(二)requests

Python3爬虫系列整理(二)requests第三方库

requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多****

是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。****

因为是第三方库,所以使用前需要cmd安装

img

pip install requests

安装完成后import一下,正常则说明可以开始使用了。

1.基本用法:

requests.get()用于请求目标网站,类型是一个HTTPresponse类型

import requests

response = requests.get(‘http://www.baidu.com’)
print(response.status_code) # 打印状态码
print(response.url) # 打印请求url
print(response.headers) # 打印头信息
print(response.cookies) # 打印cookie信息print(response.text) #以文本形式打印网页源码
print(response.content) #以字节流形式打印

运行结果:

状态码:200

url:www.baidu.com

headers信息


** 强调http://httpbin.org/******

有知道接口是什么的打1 不知道打2 知道而且会写接口打3

各种请求方式:

import requests

requests.get(‘http://httpbin.org/get’)

requests.post(‘http://httpbin.org/post’)

requests.put(‘http://httpbin.org/put’)

requests.delete(‘http://httpbin.org/delete’)

requests.head(‘http://httpbin.org/get’)

requests.options(‘http://httpbin.org/get’)

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps3.png)

2.基本的get请求

import requests

response = requests.get(‘http://httpbin.org/get’)

print(response.text)

结果

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps4.jpg)

3.带参数的GET请求:

第一种直接将参数放在url内

import requests

response = requests.get(http://httpbin.org/get?name=gemey&age=22)

print(response.text)

结果

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps5.jpg)

4.另一种先将参数填写在dict中,发起请求时params参数指定为dict

import requests

data = {

​ ‘name’: ‘tom’,

​ ‘age’: 20

}

response = requests.get(‘http://httpbin.org/get’, params=data)

print(response.text)

结果同上

5.解析json

import requests

response = requests.get(‘http://httpbin.org/get’)

print(response.text)

print(response.json()) #response.json()方法同json.loads(response.text)

print(type(response.json()))

结果

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps6.jpg)

6.简单保存一个二进制文件

二进制内容为response.content

import requests

response = requests.get(‘http://img.ivsky.com/img/tupian/pre/201708/30/kekeersitao-002.jpg’)

b = response.content

with open(‘fengjing.jpg’,‘wb’) as f:

​ f.write(b)

为你的请求添加头信息

import requests

heads = {}
heads[‘User-Agent’] = 'Mozilla/5.0 ’
​ '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ’
​ ‘(KHTML, like Gecko) Version/5.1 Safari/534.50’

response = requests.get(‘http://www.baidu.com’,headers=headers)

7.基本POST请求:

import requests

data = {‘name’:‘tom’,‘age’:‘22’}

response = requests.post(‘http://httpbin.org/post’, data=data)

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps7.jpg)

8.获取cookie

#获取

cookieimport requests

response = requests.get(‘http://www.baidu.com’)print(response.cookies)print(type(response.cookies))for k,v in response.cookies.items():

​ print(k+’:’+v)

结果:

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps8.jpg)

9.session会话维持

互动:什么是session 知道打1 不知道打2

老师给大家解释下:

**session用于存储有关用户(理解成客户端/浏览器也可以)会话的信息。********Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。********大概流程就是:用户打开浏览器访问一起网站,浏览器的COOKIE中会生成sessionID,在每次请求时都会自动带上sessionID,然后服务器端根据sessionID找到对应的session值。********sessionID就相当于是一个钥匙,服务器上存session的地方相当于一个柜子,只能拿自己的钥匙开自己的柜子取自己的东西。**session一般存储用户相关的的信息,如用户登录状态、权限控制等,其他的信息也可存。另外就是无论你站点上的用户是否登录都会生成sessionID。

import requests

session = requests.Session()

session.get(‘http://httpbin.org/cookies/set/number/12345’)

response = session.get(‘http://httpbin.org/cookies’)

print(response.text)

结果:

![img](file:///C:\Users\53513\AppData\Local\Temp\ksohtml21892\wps9.jpg)

10.超时异常捕获

**import **requests
**from **requests.exceptions import ReadTimeout
try:
​ res = requests.get(
http://httpbin.org
, timeout=0.1)
​ print(res.status_code)
except ReadTimeout:
​ print(
“timeout!”
)

11.异常处理

在你不确定会发生什么错误时,尽量使用try…except来捕获异常

所有的requests exception:

import requestsfrom requests.exceptions import ReadTimeout,HTTPError,RequestException

try:

​ response = requests.get(‘http://www.baidu.com’,timeout=0.5)

​ print(response.status_code)except ReadTimeout:

​ print(‘timeout’)except HTTPError:

​ print(‘httperror’)except RequestException:

print(‘reqerror’)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值