python爬虫入门(二)——requests库的常见方法和使用(requests库中文官网)

前言

学习使我快乐,游戏使我伤心。今天rushB,又是白给的一天。
HXDM,让我们一起学习requests库的方法和使用,沉浸在代码的世界里。呜呜呜~~

一、requests库介绍

首先列出requests库的官方网站。它在这里:requests库中文官网
requests库的宣言 Requests: HTTP for Humans(霸气嗷)

它的官方网站里面有详细的使用文档,而且还有一些小例子,不想看罗里吧嗦的博客可以去官方网站学习。

requests库是基于urllib框架编写的。

二、requests库常见方法及说明

方法说明
requests.get()获取某个网页
requests.post()发送 HTTP POST 请求
requests.put()提交HTTP PUT 请求
requests.delete()提交HTTP 删除请求
requests.head()获取HTTP HEAD(头)信息
requests.options()提交HTTP OPTINS 请求

三、response对象的属性及说明

在了解response对象的属性之前,先看一下什么是response对象。当我们使用浏览器时,比如说搜索CSDN,按F12打开开发者工具,在Network中我们可以看到下图红圈中的两种Headers。
在这里插入图片描述
request对象就是浏览器向服务器发送的请求,而response对象就是服务器对浏览器请求的响应。我们看一下下面的代码。

import requests

r = requests.get('https://www.baidu.com')

所以我们可以把'www.baidu.com'看成request请求,而方法requests.get()返回的就是response响应,所以我们就得到来response对象r。我们来直接打印一下r试试。

import requests

r = requests.get('https://www.baidu.com')
print(r)

执行结果:
在这里插入图片描述
可以看到结果并不是我们想象的百度网页的html代码,而是响应状态码,这就是因为r在这里是一个response对象,我们需要通过对它属性的访问来得到我们想要的信息。
response对象的属性:

属性说明
response.textHTTP 响应的页面内容
response.encoding文本的编码格式
response.apparent_encoding从内容分析出的响应内容编码方式
response.status_codeHTTP 响应状态
response.contentHTTP 响应页面内容的二进制格式

我们在来看一下下面的代码

import requests

r = requests.get('https://www.baidu.com')
r.encoding = 'utf-8'

print(r.text)

执行结果:
在这里插入图片描述
我们得到了百度首页的html代码

四、requests库常见方法的使用

1、requests.get()的使用

get方法是requests库最常用的方法,我们可以通过改变参数来获取我们想要的HTTP 响应。
比如说我们直接访问豆瓣网站,看看会有什么
代码:

import requests

r = requests.get('https://www.douban.com')
r.encoding = 'utf-8'

print(r.text)

执行结果:
在这里插入图片描述
哎,怎么回事,啥东西也没有,代码没有写错呀!为什么没有文本呢?
我们来打印一下HTTP 的状态响应码。
代码:

import requests

r = requests.get('https://www.douban.com')
r.encoding = 'utf-8'

print(r.status_code)

执行结果:
在这里插入图片描述
可以看到HTTP 的状态响应码是418,这个状态码是什么意思呢?418:它的含义是当客户端给一个茶壶发送泡咖啡的请求时,那就就返回一个错误的状态码表示:I’m a teapot,即:“我是一个茶壶”。这个HTTP状态码在某些网站中用作彩蛋,另外也用于一些爬虫警告。意思就是,我们被警告了,豆瓣告诉我们,“你这个坏爬虫,不遵守规定,人家就不给你看!哼╭(╯^╰)╮!”。所以我们需要通过正常的途径访问豆瓣网,还好requests.get()方法允许我们添加一些参数模拟浏览器访问,这下我们可以说,“嘿嘿,跑不掉了吧”。
如何模仿浏览器访问呢?
打开一个网页,按F12打开开发者模式,在network中,随便点击一个name下的项目,
可以看到下面的情况
在这里插入图片描述
Request Headers下面的大红圈里的User-Agent就是告诉服务器浏览器的信息。我们可以在代码中怎样写:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}  # 模拟浏览器访问

r = requests.get('https://www.douban.com', headers=headers)
r.encoding = 'utf-8'

print(r.text)
print('状态码:')
print(r.status_code)

执行结果:
在这里插入图片描述
可以看到我们得到了豆瓣的html代码,状态码也是200requests.get()方法还有很多有用的参数,比如说可以用

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)

来代替

r = requests.get("http://httpbin.org/get?key1=value1&key2=value2")

你可以去requests库官网自行探索,多写代码,才能提高。

2、requests.post()方法的使用

requests库还允许我们以post方式请求HTTP 响应,因为有些网页并不接受在URL后面添加Vaule,它可能只接受表单。我们可以这样写:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

这样我们就可以自己定制表单的内容。emmm至于表单是什么,这需要你去学习。

3、put、delete等方法的使用

其他方法的使用自然和上面都是大同小异,学习了关于HTTP 请求方面的知识,自然就知道我们在爬取网页资源该用哪种方法了。
使用例子:

r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')

4、练手网站

http://httpbin.org是一个接受request和响应response的网站,平常可以在上面练手。
在这里插入图片描述
加油!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值