Python--requests模块使用入门

Python–requests模块使用入门

网页请求方式

一般而言,我们所用的 HTTP 协议或 HTTPS 协议,使用的请求方式只有 GET 方式和 POST 方式。

GET 方式: 访问某个网页前不需要在浏览器里输入链接之外的东西,因为我们只是想向服务器获取一些资源,可能就是一个网页。
POST 方式:访问某个网页前需要在浏览器里输入链接之外的东西,因为这些信息是服务器需要的。 比如在线翻译,我们需要输入点英文句子,服务器才能翻译吧。

实现请求,会涉及到了网络方面的内容,知识比较枯燥。

但 Python 就是第三方库比较多,因此,我们并不需要实现TA底层的细节了。

实现请求,只需要引入一个 requests 模块即可。

使用 requests 模块

对于很多读者来说,requests 可能是一个比较陌生的模块,大家一般会提出以下几个方面的问题:
当前模块有哪些相关函数/方法能调用 ?
如果有相关函数/方法,需要输入什么 ?
因为 Python 是一门面向对象编程的语言,万事万物皆对象;我们面对的数据本质也是对象哦,所以啊,得明白我们爬取的数据有什么方法和属性(对象都是有方法和属性的)。

对于第一个问题,requests 库中的 get() 方法能向服务器发送了一个请求,请求类型为 HTTP 协议的 GET 方式;post() 方法,也能向服务器发送一个请求,请求类型是 HTTP 协议的 POST 方式,您大可根据访问的网页而定。
访问网页
第二、三个问题,在代码里再说。实战一波就会了,不是吗?

import requests
# 引入 requests,实现请求
URL = 'http://c.biancheng.net/uploads/course/python_spider/191009.html'
# 输入在浏览器的网址
res = requests.get(URL)
# 发送 GET 方式的请求,并把返回的结果(响应)存储在 res 变量里头
# 答第二个问题,get() 方法需要输入一个网页链接
print(type(res))
# 是时候回答第三个问题了,通过 type 查看返回的数据是什么对象。

打印结果 :
class ‘requests.models.Response’

最关键的就是最后一个,Response 就是响应数据 res 的对象类型。

好,既然已经知道 res 是一个 Response 对象了,我们也就可以去了解TA的相应属性和方法了。

属性功能例子
Response.status_code检查请求是否成功200 代表正常,404 代表网页不存在。
Response.encoding定义编码如果编码不对,网页就会乱码的。
Response.content把数据转成二进制用于获取图片、音频类的数据。
Response.text把数据转为字符串用于获取文本、网页原代码类的数据。

属性 功能 例子
Response.status_code 检查请求是否成功 200 代表正常,404 代表网页不存在。
Response.encoding 定义编码 如果编码不对,网页就会乱码的。
Response.content 把数据转成二进制 用于获取图片、音频类的数据。
Response.text 把数据转为字符串 用于获取文本、网页原代码类的数据。
因为我们要获取的数据是文本类,因此使用的属性是 Response.text。
print(res.text) # res 就是 Response 对象,.text 把数据转为字符串

修改后的代码(较上述改动了print(res.text)):

import requests
# 引入 requests,实现请求
URL = 'http://c.biancheng.net/uploads/course/python_spider/191009.html'
# 输入在浏览器的网址
res = requests.get(URL)
# 发送 GET 方式的请求,并把返回的结果(响应)存储在 res 变量里头
print(res.text)
# res 就是 Response 对象,文本类对象使用.text 把数据转为字符串形式再输出

发过来的数据,居然是乱码…在这里插入图片描述
看来,我们需要设置可接收的编码,使用 Response.encoding 即可:
res.encoding = ‘utf-8’ # 设置可接收的编码为 utf-8

关于编码的知识请看:

Unicode字符集,将全世界的文字存储到计算机
GB2312编码和GBK编码,将中文存储到计算机

多数情况下,网站的编码不是 utf-8 就是 gbk。

修改后的代码:

import requests
# 引入 requests,实现请求
URL = 'http://c.biancheng.net/uploads/course/python_spider/191009.html'
# 输入在浏览器的网址
res = requests.get(URL)
# 发送 GET 方式的请求,并把返回的结果(响应)存储在 res 变量里头
res.encoding = 'utf-8'
# 设置可接收的编码为 utf-8
file = open('《全身在格斗中的作用》.txt', 'a+')
# 创建一个名为《全身在格斗中的作用》的txt文档,指针放在文件末尾,追加内容。(Python 基础语法)
file.write(res.text)
# 将把 Reponse 对象的内容以 [字符串] 的形式写入文件
file.close()
# 关闭文档

下载图片原理同上
代码如下:

import requests
URL = 'https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike220%2C5%2C5%2C220%2C73/sign=a8ecb87e13dfa9ece9235e4503b99c66/6a600c338744ebf84073be5ddbf9d72a6059a756.jpg'
res = requests.get(URL)
# 发出请求,并把返回的结果放在变量res中
photo = open('Be careful.jpg','wb')
# 新建了一个文件Be careful.jpg,这里的文件没加路径,会被保存在程序运行的当前目录下。
photo.write(res.content)
# 将 Reponse 对象的内容以 [二进制数据] 的形式写入文件
photo.close()
# 关闭文档

初始文章见Python requests使用教程(简明版)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值