Requests

安装pip install requests

官方设计原则:让HTTP服务于人类

一、常用方法

import requests

url = "http://www.httpbin.org/get"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"} res = requests.get(url, headers=headers) print(res.encoding) # 获取字符编码 print(res.text) # 获取HTML字符串 print(res.content) # 以二进制形式打开 print(res.status_code) # 获取响应状态码 print(res.url) # 获取响应URL

汇总:

encoding # 响应字符编码
text # 字符串
content # 字节流
status_code # HTTP响应码
url # 实际数据的URL地址

示例:

保存图片到本地

url为https://inews.gtimg.com/newsapp_bt/0/10186045426/1000

import requests

url = "https://inews.gtimg.com/newsapp_bt/0/10186045426/1000"
headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E"} res = requests.get(url=url, headers=headers).content with open("demo.jpg", "wb") as f:
f.write(res)

字符编码也是使用urllib.parse.urlencode()

1. GET

requests.get()

1.1 params

查询参数

1.1.1 参数类型

字典类型,字典中键值对作为查询参数

params = {
"kw":"泰勒·斯威夫特吧"
"pn":50
}

无需编码,requests模块会将其封装好请求

1.1.2 使用方法

res = requests.get(url, params, headers=headers)

1.1.3 特点
  • URL为基准的URL地址,不包含查询参数
  • 该方法会自动对params字典编码,然后和url拼接
1.1.4 示例
import requests

#基准的URL地址
base_url = "http://www.baidu.com/s?"
# 查询参数
params = {
"kw":"泰勒·斯威夫特吧",
"pn":50
}
# 请求头
headers = {
"User-Agent":"Mozilla/5.0"
} res = requests.get(url=base_url, params=params, headers=headers) print(res.content.decode("utf-8", "ignore"))

1.2 auth

Web客户端认证

1.2.1 特点
  • 针对于需要web客户端用户名密码认证的网站
  • auth = ('username','password')
1.2.3 使用
import requests

from config import *

base_url = "http://code.tarena.com.cn/AIDCode/aid1903/12-spider/spider_day{}_note.zip"
auth = (USERNAME, PASSWD)
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3895.5 Safari/537.36"} def down():
for day in range(1,11):
day = str(day).zfill(2)
url = base_url.format(day)
try:
res = requests.get(url=url, auth=auth, headers=headers).content
filename = url.split("/")[-1]
with open(filename, "wb") as f:
f.write(res)
print(filename, "OK")
except Exception:
print("资源不存在") down()
# 配置文件
USERNAME = ""
PASSWD = ""

1.3 verify

证书认证参数

1.3.1 使用场景
  • 适用网站: https类型网站但是没有经过 证书认证机构 认证的网站
  • 适用场景: 抛出 SSLError 异常则考虑使用此参数
1.3.2 参数类型
  • verify=True(默认) : 检查证书认证
  • verify=False(常用): 忽略证书认证
1.3.3 示例
response = requests.get(
url=url,
params=params,
headers=headers,
verify=False
)

1.4 proxies

代理参数

爬虫反爬之代理IP

2. POST

携带form-data请求server

控制台介绍

  • 打开浏览器,F12打开控制台,找到Network选项卡

  • 控制台常用选项

    • Network: 抓取网络数据包

      • ALL: 抓取所有的网络数据包

      • XHR:抓取异步加载的网络数据包

      • JS : 抓取所有的JS文件

    • Sources: 格式化输出并打断点调试JavaScript代码,助于分析爬虫中一些参数

    • Console: 交互模式,可对JavaScript中的代码进行测试

  • 抓取具体网络数据包后

    • 单击左侧网络数据包地址,进入数据包详情,查看右侧

    • 右侧:

      • Headers: 整个请求信息

        General、Response Headers、Request Headers、Query String、Form Data

      • Preview: 对响应内容进行预览

      • Response:响应内容

2.1data

data = {key:value} # 构造form-data
response = requests.post(url,data=data,headers=headers)
# data :post数据(Form表单数据-字典格式)
2.1.1 特点

GET请求 : 参数在URL地址中有显示

POST请求: Form表单提交数据

2.1.2 案例

有道翻译破解案例(post)

有道翻译

二、高级用法

1. 会话保持

步骤:

  • 寻找POST地址(一般在form表单的action属性)
  • 发送用户名和密码,用session保持登录

步骤:

  • 实例化session对象session = requests.session()
  • POST表单中的action地址,注意携带data
  • GET主页地址
# 实例化session对象
session = requests.session() # 先POST form中的action地址
session.post(url=post_url, data=data, headers=headers) # 再GET
html = session.get(url=get_url, headers=headers).text

爬虫 之 requests的更多相关文章

  1. Python爬虫之requests

    爬虫之requests 库的基本用法 基本请求: requests库提供了http所有的基本请求方式.例如 r = requests.post("http://httpbin.org/pos ...

  2. 第三百二十二节,web爬虫,requests请求

    第三百二十二节,web爬虫,requests请求 requests请求,就是用yhthon的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请 ...

  3. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  4. Python爬虫练习(requests模块)

    Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...

  5. 自定义 scrapy 爬虫的 requests

    之前使用 scrapy 抓取数据的时候 ,默认是在逻辑中判断是否执行下一次请求 def parse(self): # 获取所有的url,例如获取到urls中 for url in urls: yiel ...

  6. python爬虫 - python requests网络请求简洁之道

    http://blog.csdn.net/pipisorry/article/details/48086195 requests简介 requests是一个很实用的Python HTTP客户端库,编写 ...

  7. 爬虫之requests模块

    requests模块 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在爬虫领域中占据着半壁江山的 ...

  8. 爬虫之Requests&beautifulsoup

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...

  9. 爬虫之requests

    一.基本用法 1.GET请求 ①r=requests.get(url) --返回Response对象 def get(url, params=None, **kwargs): params={... ...

  10. 04.Python网络爬虫之requests模块(1)

    引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...

随机推荐

  1. nginx基本运维及常用配置

    nginx基本运维及常用配置 ========================================================== 基本运维 nginx 的启动 nginx -c /p ...

  2. 定制开发kubernetes流程

    kubernetes集群三步安装 概述 本文介绍如何对kubernetes进行二次开发,仓库如何管理,git分支如何管理,怎样利用CI去编译与发布以及如何给社区贡献代码等,结合实际例子,望对大家有所帮 ...

  3. jquery 动态载入页面,并且保证 url 变动

    最近做一个新的项目,项目页头,导航,页尾是不变的,只有中间部分是通过加载其他页面,达到内容刷新的. 大概结构如下, 要求, 1. 正文部分可以通过加载一个页面达到刷新效果 2. 保留加载的页面 url ...

  4. ABP实现EF执行SQL(增删改查)解决方案

    前言 一般情况下,使用EF中的语法可以帮助我们完成绝大部分业务,但是也有特殊的情况需要直接执行的Sql语句.比如,我们的业务过于复杂繁琐,或是有些业务使用EF操作时比较复杂,但是使用的Sql时会很简单 ...

  5. Python递归函数,二分查找算法

    目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...

  6. CodeForces 15D Map

    洛谷题目页面传送门 & CodeForces题目页面传送门 题意见洛谷里的翻译.(注意翻译里有错误,应该是优先选上面的矩阵,在同一行的优先选左边的矩阵) 这题一看就会做啊 (以下设大矩阵是\( ...

  7. Java内存映射,上G大文件轻松处理

    内存映射文件(Memory-mapped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘的操作) ...

  8. javaScript基础-04 对象

    一.对象的基本概念 对象是JS的基本数据类型,对象是一种复合值,它将很多值(原始值或者对象)聚合在一起,可通过名字访问这些值,对象也可看做是属性的无序集合,每个属性都是一个名/值对.对象不仅仅是字符串 ...

  9. (九)c#Winform自定义控件-树

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  10. SpringBoot优雅地配置日志

    本文主要给大家介绍SpringBoot中如何通过sl4j日志组件优雅地记录日志.其实,我们入门 JAVA 的第一行代码就是一行日志,那你现在还在使用System.out.println("H ...