requests的再次学习


title: requests模块的再次理解
date: 2020-03-10 22:44:26
tags:


1、response的解析

当requests模块发送请求后,我们会对其响应的数据也就是response进行解析,解析的方式有两种。

  • response.text
    • 该方法返回的是str。
    • 该方法的默认解码方式是'ISO-8859-1'。
    • 想要更改解码方式,需要设置response的解码方式,如response.encoding = 'uft-8'
  • response.content
    • 该方法返回的是二进制。
    • 该内容解码使用decode()方法即可。
      • decode()方法默认是“uft-8”。
      • 使用其他方式解码只需要传入相关的名称即可,例如:decode("gbk")。

当然,这些方法首先推荐的是:

1、response.content.decode()

2、response.content.decode("gbk")

3、response.encoding = 'uft-8'

​ response.text

这几个方式可以解决绝大部分的乱码问题。

2、模拟登陆

有些网站需要登录后才能查看相关的内容,那么就需要我们在爬取网页内容时进行模拟登陆。

模拟登陆有两个方式可以实现:

1、使用session发送post请求登陆,登陆之后再发送get请求即可。

基本模板:

# coding=utf-8
import requests
session = requests.session()
#需要根据不同的网站来写
post_url = "请求的url地址"
post_data = {"username":"账号..."}
session.post(post_url,data=post_data)
#之后session就带了cookie,再次发送get请求就能
get_url = ""
response = session.get(get_url)

2、自己手动登陆后会有一个cookie,在发送请求时在请求头中带上这个cookie即可。

模板:

# coding=utf-8
import requests
headers = {"user-agent":"xxx","cookie":"xxx"}
get_url = ""
response = requests.get(get_url,headers)

其实此处也可以将cookie单独拿出来,放入一个字典中,get中有cookie参数,可以再那里传入,但是不太方便,还需要将cookie中的键值对一个个放入。

3、使用代理

这个就不用多说了,要注意的是如果访问http地址,就需要可以访问http的代理,https同理。

# coding=utf-8
import requests
headers = {"user-agent":"xxx","cookie":"xxx"}
get_url = ""
# 后方是个端口号
proxy = {"http":"http://123.54.67.48:80"}
response = requests.get(get_url,headers = headers,proxies = proxy)

(不知道为何pycharm代码提示不提示proxies!-_-||||)

猜你喜欢

转载自www.cnblogs.com/wuren-best/p/12459663.html