文章目录
前言
爬虫的门槛不高,高就在于往后余生的每一次实操都会让你崩溃。在这个大数据的时代,数据就是金钱!所以越来越多的企业重视数据,然后再通过爬虫的手段获取公开的数数据,为企业项目进行赋能。
上一篇文章中,我带大家入门了爬虫,知道什么是爬虫,对爬虫有了大体的了解。
本篇博文将带领大家进入新的内容,爬虫最常用的库: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响应内容的方法:
-
<