https://www.cnblogs.com/whatbeg/p/5320666.html
会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题。在cookies的处理上会话对象一句话可以顶过好几句urllib模块下的操作。即相当于urllib中的:
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
urllib.request.install_opener(opener)
1:保持请求之间的Cookies,我们可以这样做。
import requests
session = requests.Session()
session.get(login_url) # 可以保持登录态
2:请求时,会加上headers,一般我们会写成这样
session.get(url, params, headers=headers)
唯一不便的是之后的代码每次都需要这么写,代码显得臃肿,所以我们可以这样:
#在构造函数中,这样设置是全局的。
# 设置请求头
s = requests.Session()
s.headers = {'balabala'}
# 移除服务器验证
s.verify = False
# 设置代理
s.proxies={'aa'}
3:默认requests请求失败后不会重试,但是我们跑case时难免遇到一些网络或外部原因导致case失败,我们可以在Session实例上附加HTTPAdapaters 参数,增加失败重试次数。
request_retry = requests.adapatrs.HTTPAdapaters(max_retries=3)
session.mount('https://',request_retry)
session.mount('http://',request_retry)
这样,之后的请求,若失败,重试3次。
4:重定向
网络请求中可能会遇到重定向,我们需要一次处理一个请求,可以把重定向禁止。
session.post(url,data,allow_redirects=False)
5: post请求提交json格式数据时(请求头为:{“Content-Type”: “application/json”}),一般先要把python对象转换成json对象。可能很多时候是这样写:
session.post(url, data=json.dumps(data))。
其实post有一个默认参数json,可以直接简写成:
session.post(url, json=data)
6:写接口请求,debug时,会需要看下代码请求的详细信息,当然我们可以使用fiddler来查看,其实我们自己也可以在代码这样获取debug信息*
import requests
import logging
import httplib as http_client
http_client.HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True
requests.get('https://www.baidu.com')
#更好的方法是自己封装一个装饰器,就可以为任意请求函数添加一个debug功能。
7:使用grequests实现异步请求。
pip install grequests
import grequests
urls = [
'http://www.url1.com',
'http://www.url2.com',
'http://www.url3.com',
'http://www.url4.com',
'http://www.url5.com',
'http://www.url6.com',
]
resp = (grequests.get(u) for u in urls)
grequests.map(resp)
# [<Response [200]>, <Response [200]>, <Response [200]>, <Response [200]>, <Response [200]>, <Response [200]>]
8:发送自定义cookies
我们使用Session实例来保持请求之间的cookies,但是有些特殊情况,需要使用自定义的cookies
我们可以这样
# 自定义cookies
cookie = {'guid':'5BF0FAB4-A7CF-463E-8C17-C1576fc7a9a8','uuid':'3ff5f4091f35a467'}
session.post('http://wikipedia.org', cookies=cookie)
9:需求确定前后端并行设计时,这时测试并没有办法调用接口,如何做接口测试呢?我们可以使用mock或者是httpretty
import requests
import httpretty
# 模拟返还的状态码
@httpretty.activate
def test_beta1_access():
httpretty.register_uri(httpretty.GET, "http://beta.com/",
body="here is the mocked body",
status=201)
response = requests.get('http://beta.com')
expect(response.status_code).to.equal(201)
# 模拟返还response的body
@httpretty.activate
def test_some_api():
httpretty.register_uri(httpretty.GET, "http://beta.com/",
body='{"success": false}',
content_type='text/json')
response = requests.get('http://beta.com/')
expect(response.json()).to.equal({'success': False})
详细使用可以查看API_DOC
10:统计一个API请求花费的时间,我们可以使用如下方法
session.get(url).elapsed
11:设置请求超时
session.get(url, timeout=15)
# timeout 仅对连接过程有效,与响应体的下载无关。
# timeout 并不是整个下载响应的时间限制,而是如果服务器在15 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)
关于Python ,requests的小技巧,就是这些。
相关推荐
崔庆才老师的“跟着崔庆才学爬虫2:requests库的使用”教程主要涵盖了Python爬虫中必不可少的requests库的使用方法。requests库是Python中最常用的HTTP客户端库,用于发送HTTP请求,非常适合进行网页抓取。在这个...
本套教学资料深入解析了Python爬虫的核心技术、Scrapy框架以及分布式爬虫的实现,旨在帮助学习者掌握这一领域的核心技能。 一、Python爬虫核心技术 Python语言因其简洁明了的语法和丰富的第三方库而成为网络爬虫...
接着,会讲解如何安装和使用常见的Python爬虫库,比如requests库用于发送HTTP请求,BeautifulSoup库用于解析HTML文档。 在HTTP协议部分,你将学习GET和POST两种基本请求方法,了解HTTP头、Cookie和Session的用法,...
# Python爬虫作业报告 本次Python爬虫作业的目标是爬取某电商网站上的商品信息,并将其存储到本地数据库中。具体步骤如下: ## 1.... 我们选择了淘宝网作为...## 4. 存储数据 我们选择了MySQL数据库作为存储数据的工
4. JSON数据处理:京东的API可能返回JSON格式的数据,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python的json模块可以帮助我们进行JSON数据的...
Python中最常用的爬虫库有BeautifulSoup、Requests和Scrapy。Requests库负责发送HTTP请求,获取网页的HTML内容;BeautifulSoup则用于解析这些HTML文档,找出我们感兴趣的数据;Scrapy是一个更全面的框架,包含了爬虫...
在这个“爬虫教程总结+考试总结2023上学器”中,我们将深入探讨爬虫的基本原理、常用技术以及在教育和考试中的应用。 一、爬虫基础 1. 爬虫的定义:网络爬虫(Web Crawler)又称为蜘蛛或机器人,通过模拟人类...
在提供的“爬虫案例2资源”压缩包中,包含了完整的爬虫程序和解析程序,你可以根据这些代码进行学习和研究。通过实际运行这些代码,你可以更深入地理解网络爬虫的工作流程,以及如何在Python中处理和存储爬取的数据...
requests ,beautifulsoap,lxml都是程序库,爬虫需要自己实现;Scrapy是爬虫框架 Scrapy基于twisted,性能强大,内置功能丰富,而且易于扩展 Scrapy内置css和xpath选择器,比起beautifulsoap解析速度快 Scrapy太...
这个案例将使用到requests库来发送HTTP请求,以及BeautifulSoup库来解析网页内容。 适用人群 Python开发者:希望提高网络爬虫的开发技能。 数据分析师:需要从B站获取视频数据进行分析。 视频内容创作者:可能需要...
Scrapy: Scrapy 是一个强大的 Python 爬虫框架,提供了高效的抓取和数据处理能力,支持异步方式处理请求和页面解析。它拥有丰富的特性,如自动 throttling、并发控制、数据存储等。 Beautiful Soup: Beautiful ...
这是一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。读者只需在阅读过程紧跟文章思路,理清相应的...使用 requests 库抓取网站数据; 使用 Beautiful Soup 解析网页; 清洗和组织数据; 爬虫攻防战;
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...
然后使用pip install requests、pip install beautifulsoup4等命令安装爬虫需要的第三方库。 了解了环境后,就可以开始写第一个爬虫程序了。这里以爬取百度百科人物条目为例。第一步,使用requests.get()方法获取百度...
爬虫实例:爬取热门电影信息 技术栈: HTTP请求库: 使用requests库发送HTTP请求。 解析库: 使用BeautifulSoup解析HTML。 数据存储: 将数据存储为JSON格式。 环境依赖构建: 使用Anaconda创建Python虚拟环境。 对象:...
标题 "Python-知乎爬虫python27requestsjsonbs4time" 暗示这是一个使用 Python 2.7 版本,结合 requests、json、bs4 和 time 库编写的知乎爬虫项目。在这个项目中,开发者可能实现了抓取知乎网站上的特定数据,如...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...