写点什么

Python 爬虫基础 -requests 模块 -1

作者:zyf
  • 2022 年 6 月 03 日
  • 本文字数:860 字

    阅读完需:约 3 分钟

requests 请求模块

写在前面

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

请求方式

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

  • Keep-Alive&连接池

  • 国际化域名和 URL

  • 带持久 Cookie 的会话

  • 浏览器式的 SSL 认证

  • 自动内容解码

  • Unicode 响应体

  • HTTP(S)代理支持

  • 文件分块上传

  • 流下载

  • 连接超时

  • 自动解压

  • 支持 .netrc

  • 分块请求

  • 优雅的 key/value Cookie

  • 基本/摘要式的身份验证

GET 请求

最常用的 HTTP 请求方式为 GET 和 POST,GET 请求时有两种方法,一种带参数,一种不带参数,这里以百度为例

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

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



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

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

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

运行结果如下:



说明

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

爬取二进制数据

实例下载 baidu 首页的 logo 图片

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

import requestsresponse = 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)   #写入
复制代码

运行结果如下:




发布于: 43 分钟前阅读数: 5
用户头像

zyf

关注

还未添加个人签名 2022.05.28 加入

还未添加个人简介

评论

发布
暂无评论
Python爬虫基础-requests模块-1_6月月更_zyf_InfoQ写作社区