Python爬虫基础-requests模块-1

98 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

requests请求模块

写在前面

一个学生,请多多关照,希望能在掘金记录自己的学习历程!❤️

请求方式

由于requests为第三方模块,使用requests时需要通过执行指令pip install requests来安装该模块,requests功能特性如下:

  • Keep-Alive&连接池
  • 国际化域名和URL
  • 带持久Cookie的会话
  • 浏览器式的SSL认证
  • 自动内容解码
  • Unicode响应体
  • HTTP(S)代理支持
  • 文件分块上传
  • 流下载
  • 连接超时
  • 自动解压
  • 支持 .netrc
  • 分块请求
  • 优雅的key/value Cookie
  • 基本/摘要式的身份验证

GET请求

最常用的HTTP请求方式为GET和POST,GET请求时有两种方法,一种带参数,一种不带参数,以百度(www.baidu.com)为例,示例代码如下:

import requests    # 导入网络请求模块requests

# 发送网络请求
response = requests.get('https://www.baidu.com')
print('响应状态码为:',response.status_code)  # 打印状态码
print('请求的网络地址为:',response.url)          # 打印请求url
print('头部信息为:',response.headers)      # 打印头部信息
print('cookie信息为:',response.cookies)      # 打印cookie信息

程序运行结果如下图所示:

image.png

获取请求地址所对应的源码

当响应状态码为200时,说明本次网络请求已成功,此时可以获取请求地址所对应的网页源码 示例代码如下:

import requests   #导入模块
response = requests.get('http://www.baidu.com')  
response.encoding='utf-8'   #对结果进行utf-8编码
print(response.text) #打印网页源码

运行结果如下:

image.png

说明

在没有进行utf-8编码时,可能会出现乱码:

爬取二进制数据

实例下载baidu首页的logo图片

使用requests模块中的get()函数不仅可以获取网页中的源码信息,还可以获取二进制文件,但是在获取二进制文件时,需要使用Response.content属性获取bytes类型的数据,例如爬取baidu首页的logo,实例代码如下:

import requests
response = requests.get('http://www.baidu.com/img/bd_logo1.png?where=super')
print(response.content) #打印二进制数据
with open('百度logo.png','wb') as f:  #通过open函数将二进制数据写入到本地文件
    f.write(response.content)   #写入

运行结果如下:

image.png

image.png