爬虫(二):requests模块

本文详细介绍了Python的requests模块,包括安装、response对象、get和post请求的使用、处理中文乱码、携带参数、设置headers、cookies、proxies等。通过实例解析requests的常用方法,帮助理解如何在爬虫中进行网络请求。
摘要由CSDN通过智能技术生成

requests模块简介

用于发送请求、获取响应,有很多替代模块,比如urllib,但requests代码简洁易懂
requests在底层实际上封装了urllib

requests模块的文档

1. 安装模块(省略)

2. response响应对象

import requests
url = 'http://www.baidu.com'
response = requests.get(url)
# <class 'str'>
print(type(response.text))
# 打印源码
print(response.text)

源码中有乱码的情况
在这里插入图片描述
response.text是requests模块按照chardet模块推测出的编码字符集进行编码的结果,所以输出中会有乱码
response.text = response.content.decode(‘推测的编码字符集’)
网络中,字符串以bytes类型传输,response.content是bytes类型的响应源码

response.content解决中文乱码问题

打印二进制源码

import requests
url = 'http://www.baidu.com'
response = requests.get(url)
# 打印二进制源码
print(response.content)

在这里插入图片描述

  • encoding改一下编码就不会出现乱码
import requests
url = 'http://www.baidu.com'
response = requests.get(url)
# ISO-8859-1 是推测的编码字符集
print(response.encoding)
response.encoding = 'utf8'
print(response.text)

在这里插入图片描述

  • content.decode() 和**content.decode(‘GBK’)**也能解决乱码问题
    decode默认’utf8’
    decode()中还可选:gb2312,ascii,iso-8859-1
import requests
url = 'http://www.baidu.com'
response = requests.get(url)
# content能解码
print(response.content.decode())

在这里插入图片描述

response.content 和 response.text
  1. 类型不同
  2. content没有指定解码类型,text的解码类型由requests模块推测

3. response响应对象的其他常用属性/方法

  • response.text
  • response.content
  • response.url
    响应的url,请求的url不一定返回响应,有可能重定向
  • reponse.status_code
    状态码
  • response.request.headers
    响应对象对应的请求的请求头(不是响应头)
  • response.headers
    响应头
  • response.request._cookies
    响应对应的请求的cookies,返回cookieJar类型
  • response.cookies
    响应的cookie(经过了Set-cookie动作,返回CookieJar类型)
  • requests.json()
    自动将json字符串类型的响应内容转换为Python对象(dict或list)
import requests
url = 'http://www.baidu.com'
response = requests.get(url)

print(response.request.headers)
print(response.headers)
print(response.request._cookies)
print(response.cookies)

注意请求头的User-Agent,很容易被识别为爬虫
Cookie中的BDORZ是需要特别注意的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值