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的小技巧,就是这些。
相关推荐
5. **错误处理**:处理网络请求错误、解析错误等,并确保爬虫的稳定运行。 6. **用户代理(User-Agent)**:模拟浏览器访问,避免被网站识别为爬虫。 7. **爬取策略**:遵守 `robots.txt` 文件的规则,合理设置爬取...
崔庆才老师的“跟着崔庆才学爬虫2:requests库的使用”教程主要涵盖了Python爬虫中必不可少的requests库的使用方法。requests库是Python中最常用的HTTP客户端库,用于发送HTTP请求,非常适合进行网页抓取。在这个...
本套教学资料深入解析了Python爬虫的核心技术、Scrapy框架以及分布式爬虫的实现,旨在帮助学习者掌握这一领域的核心技能。 一、Python爬虫核心技术 Python语言因其简洁明了的语法和丰富的第三方库而成为网络爬虫...
内容概要:本文详细介绍了如何使用Python的requests和BeautifulSoup库构建一个简单的网络爬虫,主要步骤包括发送HTTP请求、解析HTML内容并提取特定的HTML标签。通过实例代码展示,读者可以快速掌握从网站上提取信息...
内容概要:本文介绍了Python爬虫的基本概念和具体实现方法,重点阐述了一个使用requests和BeautifulSoup库从网页中抓取标题与所有链接的简单示例,详细讲解了每步代码的功能与逻辑流程。 适合人群:初学者以及对Web...
### Python爬虫基础教程:requests库(二)代码实例 #### 概述 本文将详细介绍Python爬虫技术中关于`requests`库的应用,包括GET请求、POST请求、使用代理以及session登录等内容。`requests`是Python中最常用的...
3. **编写爬虫程序**:使用Python的Requests库发送HTTP请求获取网页源码,再借助BeautifulSoup库解析HTML,提取商品信息。爬虫流程大致为: - 发送请求:Requests库用于发送GET请求,获取网页HTML内容。 - 解析...
### Python爬虫入门教程知识点详解 #### 一、理解网页结构 在进行Python爬虫开发之前,首先要了解网页的基本构成。网页通常包含三个主要部分:HTML(超文本标记语言)、CSS(层叠样式表)以及JavaScript(一种常用...
接着,会讲解如何安装和使用常见的Python爬虫库,比如requests库用于发送HTTP请求,BeautifulSoup库用于解析HTML文档。 在HTTP协议部分,你将学习GET和POST两种基本请求方法,了解HTTP头、Cookie和Session的用法,...
解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到...
在提供的“爬虫案例2资源”压缩包中,包含了完整的爬虫程序和解析程序,你可以根据这些代码进行学习和研究。通过实际运行这些代码,你可以更深入地理解网络爬虫的工作流程,以及如何在Python中处理和存储爬取的数据...
总结来说,Python爬虫入门主要涉及以下几个方面: 1. 理解网页结构:HTML、CSS和JavaScript的作用。 2. 使用requests库抓取网页数据:发送HTTP请求并接收响应。 3. 使用Beautiful Soup解析HTML:查找和提取所需信息...
4. JSON数据处理:京东的API可能返回JSON格式的数据,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python的json模块可以帮助我们进行JSON数据的...
python爬虫实例 requests+beautifulsoup4解析 HTML 页面一个简单的网页上抓取标题和链接 Python 爬虫是一种自动化程序,用于从网站上抓取数据。这里我将提供一个简单的 Python 爬虫实例,使用 requests 库来发送 ...
内容概要:本文介绍了 Python 爬虫的基本流程,主要包括环境准备、安装必要库(如 requests 和 beautifulsoup4)、编写爬虫代码(发起请求、解析HTML),并通过两个案例(简单抓取网页内容和模拟登录)展示了具体...
7. 网络爬虫解析篇之 BS4 解析 8. 网络爬虫解析篇之 JSON 解析 **第三部分 中章:网络爬虫进阶** 9. 网络爬虫进阶之 Selenium 篇 10. 网络爬虫进阶之多进程爬虫 11. 网络爬虫进阶之多线程爬虫 12. 网络爬虫进阶之多...
Python中最常用的爬虫库有BeautifulSoup、Requests和Scrapy。Requests库负责发送HTTP请求,获取网页的HTML内容;BeautifulSoup则用于解析这些HTML文档,找出我们感兴趣的数据;Scrapy是一个更全面的框架,包含了爬虫...
通过示例代码,演示了如何使用 requests 库进行网络请求,使用 BeautifulSoup 和 lxml 解析 HTML 文档,使用正则表达式和 JSON 解析数据,最后还介绍了文件操作和数据库存储的方法。此外,还涉及多线程、异步 IO ...
在这个“爬虫教程总结+考试总结2023上学器”中,我们将深入探讨爬虫的基本原理、常用技术以及在教育和考试中的应用。 一、爬虫基础 1. 爬虫的定义:网络爬虫(Web Crawler)又称为蜘蛛或机器人,通过模拟人类...