Python瞎老弟的爬虫心得之requests篇②requests基本使用

Python瞎老弟的爬虫心得之requests篇②requests基本使用,第1张

上一期已经成功安装了requests模块,并简单的使用了requests,本期,我们将详细介绍requests模块

直接使用requests.get()方法即可

其中内容将通过requests.text查看

将get()方法,改为post()即可

其中需要提交的内容,通过data参数传入

url参数,也即跟在地址后的?后的一串内容

我们可以直接通过url地址将其构造出来

也可以通过params参数,传入一个字典使用

可以看出,地址同样被自动构造为

这是一种更加容易的传入参数的方法,可以不需要使用

我们得到了一个对象r,这是一个requests.models.Response对象

使用r.text可以得到响应内容

其中解码方式是requests自行猜测的,它会把猜测的结果保存在r.encoding中

使用r.encoding可以得到或者改变编码方式

如果使用r.text得到的内容不正确,可以手动修改r.encoding,然后再使用r.text输出内容

如果不知道正确的编码,可能有人会建议你使用chardet模块来进行编码的测试(该模块需要使用pip安装,目前版本也会随安装requests附带)

使用方法:

事实上,现在的requests已经使用了chardet模块,但你仍然可以将chardet用于其他时候使用

使用r.content可以得到二进制的响应内容

使用r.json()可以得到json的响应内容

给headers参数传入一个字典即可

如同之前你预想的那样,user-agent会被修改为lsp

通过r.status_code可以查看状态码

通过r.headers可以查看响应头

通过r.raise_for_status()可以在状态码为不正常的时候抛出异常

请求中添加timeout参数,即可让你的程序在指定的时间内没有得到响应就抛出异常

通过r.url可以查看到请求地址

通过r.history可以查看到重定向

通过修改allow_redirects参数为False可以禁止重定向

例如禁止github进行重定向

requests 继承了urllib2的所有特性,比urllib简洁高效

requests所有功能都能通过"requests/api.py"中的方法访问

1、安装:

pip install requests

2、get请求:

封装链接中的参数,请求时用params参数进行传递

url = " http://www.baidu.com "

resp = requests.get(url,params=,headers=)

3、post请求:

发送的数据必须放在字典中,通过data参数进行传递

url = " http://www.baidu.com "

resp = requests.post(url,data=,headers=)

4、查看响应内容:

print (resp.text ) # resp.text 返回的是Unicode格式的数据

print(resp.json()) # res.json() 返回的是json格式的数据

print(resp.content) # resp.content返回的字节类型数据

print (resp.url) # 查看完整url地址

print (resp.encoding) # 查看响应头部字符编码

print(resp.status_code) # 查看响应码

print(resp.cookies) # 查看返回的cookies

print(resp.r.elapsed) #响应速度,从发送请求到响应到达所需要的时间

5、Cookies

import requests

url = " http://www.baidu.com "

resp = requests.get(url)

cookiejar = resp.cookies # 返回cookies对象

cookiedic = requests.utils.dict_from_cookiejar(cookiejar) # 将cookies转为字典

6、Sission

说明

1、发送请求前先创建一个session会话,将请求到的cookies存入session中

2、程序的请求要一直使用session.get/post,以保证cookies在程序中的传递

3、程序的请求如果使用requests.get/post需要在参数中增加headers{"cookie:":"****"},否则请求会报错,因为requests.get/post每次执行都会重新开启一个新的请求,丢失已获取的cookies

例子:登录17小说网拿到书架数据

import requests

session = requests.session() # 创建会话(session),将cookie存入session中

data = {

"loginName": "1 7",

"password": "1 5"

}

url = " https://passport.17k.com/ck/user/login "

resp1 = session.post(url,data=data) # 登录,获取cookies

resp2 = session.get(" https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919 ")

print(resp2.json())

7、防盗链处理

防盗链,本质上是溯源,即本次请求的上一次请求,请求时将referer地址加上即可

header = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0Win64x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36",

"Referer":" https://www.pearvideo.com/video_1734919 " # 防盗链:溯源,确认当前请求的上一级

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11795104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存