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.text HTTP 响应的页面内容
response.encoding 文本的编码格式
response.apparent_encoding 从内容分析出的响应内容编码方式
response.status_code HTTP 响应状态
response.content HTTP 响应页面内容的二进制格式

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

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的网站,平常可以在上面练手。
在这里插入图片描述
加油!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Bob_ganxin/article/details/108740320