Python爬虫:啃书君教你玩转requests库

前言

爬虫的门槛不高,高就在于往后余生的每一次实操都会让你崩溃。在这个大数据的时代,数据就是金钱!所以越来越多的企业重视数据,然后再通过爬虫的手段获取公开的数数据,为企业项目进行赋能。

上一篇文章中,我带大家入门了爬虫,知道什么是爬虫,对爬虫有了大体的了解。

本篇博文将带领大家进入新的内容,爬虫最常用的库:requests库,最后并以综合案例模拟登录github,带你实战。

一、requests模块使用

本次文章主要分享的是requests这个http模块的使用,该模块主要用于发起请求获取响应,该模块有很多替代模块,比如说urllib模块,但是在工作中使用最多的是requests模块,requests的代码语法简单易懂,相对于臃肿的urllib模块,使用requests模块写爬虫会大大减少代码量,而且实现某一功能会更简单,因此推荐大家使用requests模块。

知识点

  • 掌握headers参数的使用
  • 掌握发送带参数的使用
  • 掌握headers中携带cookies
  • 掌握cookies参数的使用
  • 掌握cookieJar的掌握方法
  • 掌握超时参数timeout的使用
  • 掌握ip参数proxies的使用
  • 掌握verify参数,忽略CA证书
  • 掌握requests模块

1.1 requests模块发送get请求

1、需求:通过requests向百度发送请求,获取页面的源码

2、运行下面代码观察打印结果

demo1.py

import requests

#目标url
url = 'http://www.baidu.com'
# 向url发送get请求
response = requests.get(url)
# 打印响应内容
print(response.text)

1.2 response响应对象

观察上面代码运行的结果观察发现,有好多乱码,这是因为编码与解码所使用的字符集不同造成的;我们尝试使用下边的办法来解决中文乱码问题。

demo2.py

import requests

#目标url
url = 'http://www.baidu.com'
# 向url发送get请求
response = requests.get(url)
# 打印响应内容
print(response.content.decode())    # 注意这里

1、response.text是requests模块按照charset模块推测出的编码字符串进行解码的结果。

2、网络传输的字符串都是bytes类型的数据,所以requests.text = response.content.decode(‘推测出来的编码字符集’)

3、我们可以在网页源码中搜索charset,尝试参考该编码的字符集,注意:存在不准确的情况。

1.3 response.text与response.content的区别

  • response.text

类型:str

解码类型:requests模块自动根据http头部对响应的编码做出有根据的推测,推测文本编码。

我们可以手动设定编码格式

demo3.py

import requests

#目标url
url = 'http://www.baidu.com'
# 向url发送get请求
response = requests.get(url)
response.encoding='utf-8'
# 打印响应内容
print(response.text)
  • response.content

类型:bytes

解码类型:没有设定。可以自行进行设定。


知识点:掌握利用decode函数对requests.content解决中文乱码


1.4 通过对response.content进行decode,来解决中文乱码

  • response.content.decode() 默认utf-8
  • response.content.decode(‘GBK’)
  • 常见的字符集编码

utf-8

gbk

gb2312

ascill(读音:阿斯克码)

iso-8859-1


知识点:掌握利用decode函数对requests.content解决中文乱码


1.5 response响应对象的其他常用的属性和方法

response = requests.get(url)中response是发送请求获取的响应对象;response响应对象中除了text,content获取响应内容以外还有其他常用的属性或方法。

  • response.url 响应的URL,有时候响应的URL和请求的URL并不样。
  • response.status_code 响应状态码
  • response.headers 响应头
  • response.request.headers 响应头对应的请求头
  • response.request._cookies 响应对应请求的cookies,返回cookieJar类型
  • response.cookies 响应的cookie(经过了set-cookie动作)返回cookieJar类型
  • response.json() 自动将json字符串类型的响应内容转换为Python对象(dict or list)

demo4.py

import requests

#目标url
url = 'http://www.baidu.com'
# 向url发送get请求
response = requests.get(url)
response.encoding='utf-8'
print(response.url)
print(response.status_code)
print(response.request.headers)
print(response.headers)
print(response.request._cookies)
print(response.cookies)

知识点:掌握response响应对象的其他常用属性


二、requests模块发送请求

2.1 发送带headers的请求

我们先写一个获取百度首页的代码

demo5.py

import requests

#目标url
url = 'http://www.baidu.com'
# 向url发送get请求
response = requests.get(url)
# 打印响应内容
print(response.content.decode())

# 打印对应请求头信息
print(response.request.headers)

2.1.1思考

1、对比浏览器上百度网页的源码和代码中百度首页的源码,看看有什么不同?

查看网页源代码的方法:

  • 右键-查看网页源代码
  • 右键-检查

2、对比url响应内容和代码中的百度首页的源码,有什么不同?

  • 查看对应url响应内容的方法:

  • <

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值