默认情况下,除了head请求,requests会自动处理重定向 重定向就是会把url重新指定到另一个.比如github,使用http会自动重定向到https.一些公司也会使用网关啥的做重定向. r = requests.get('http://github.com') print(r.url) print(r.status_code) print(r.history) 可以看出url中http变成了https,使用histroy可以追踪重定向 如果不想要使用重定向,可以在请求中使用allow_r…
Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字典或字节序列,作为参数增加到url中.例如: import requests kv={'key1':'value1','key2':'value2'} r=requests.request('GET','http://python123.io/ws',params=kv) print(r.url)…
首先,确认一下: Requests 已安装 Requests是 最新的 让我们从一些简单的示例开始吧. 发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取Github的公共时间线 >>> r = requests.get('https://github.com/timeline.json') 现在,我们有一个名为 r 的 Response 对象.可…
分类专栏: Python接口自动化测试之requests库入门 作者 | Anthony_tester ,300w+访问量博主,Oracle测试开发工程师. 地址 | https://blog.csdn.net/u011541946/article/details/77745924 声明 | 本文是 Anthony 原创,已获授权发布,未经原作者允许请勿转载 我们可能听说了Session和Cookies,面试中可能也会被问到这个两者之间的区别.本篇主要通过画图来理解两个机制,然后通过回到两个机制…
重定向与请求历史 默认情况下,除了 HEAD, Requests会自动处理所有重定向. 可以使用响应对象的 history 方法来追踪重定向. Response.history 是一个:class:Response <requests.Response> 对象的列表,为了完成请求而创建了这些对象. 这个对象列表按照从最老到最近的请求进行排序. 例如,Github将所有的HTTP请求重定向到HTTPS.: r = requests.get('http://github.com') r.url r…
先看一个没有请求参数的get请求,访问百度首页 import requests r = requests.get('https://www.baidu.com') print(r.status_code) print(r.text) 通过requests.get()可以发起一个get请求,后面跟着url status_code会返回状态码 text会返回响应体中的内容,requests会自动帮忙解析.返回的是百度首页的html代码 接下来看一个带参数的get请求,查询天气 import requ…
安装: $ pip install requests Response对象的一些基本属性: Response.status_code 请求的返回状态,正常为200 Response.text 页面的字符串形式 Response.encoding header中定义的编码(若header中未定义则会出问题) Response.apparent_encoding 根据页面分析得到的编码 Response.content http相应内容的二进制形式 Response.raise_for_status…
因为找不到可以演示上传接口,所以只能纯代码了 文件上传 上传文件是在请求中使用files参数,files需要指向一个dict,然后dict里面的键是接口中对应文件名的字段,而值就是打开这个文件读取到内存的内容 以上图中这个字段举例 path = 文件路径 file = {'templateFile':open(path.'rb')} 一般上传文件是post请求 r = requests.post(url,files = file) 文件下载 默认情况下,使用requests库在进行请求,响应体是…
[本文出自天外归云的博客园] 要模拟multipart/form-data类型请求,可以用python3的requests库完成.代码示例如下: #请求的接口url url = "url" #假设待上传文件与脚本在同一目录下 dir_path = os.path.abspath(os.path.dirname(__file__)) #待上传文件的路径,这里假设文件名为test.txt file_path = os.path.join(dir_path,'test.txt') ''' f…
2017-07-25 10:38:30 response = requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接∙ params : url中的额外参数,字典或字节流格式,可选 params参数是字典或字节序列,作为参数增加到url中 kv = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.request('GET', 'http://python123.io/…
1.使用requests库发送请求,fiddler无法抓到包:使用浏览器请求相同的url,可以抓到包 在请求参数中添加 proxies参数,如下: proxies = { 'http': 'http://127.0.0.1:8888', 'https': 'http://127.0.0.1:8888', } requests.你的请求方法('你的请求',data=你的payload, proxies=proxies) proxies是字典,里面的value是fiddler代理和端口 2.打印ge…
目录 1.代理的了解 2.代理的分类 (1)正向代理 (2)反向代理 (3)总结 3.Requests库使用代理 4.总结 1.代理的了解 在上图中我们可以把Web server看成是Google服务器,正常情况下在国内是无法访问Google服务器的,这个时候就需要使用代理软件,帮助我们发送请求来访问Google服务器.然后再通过代理软件把Google服务器响应的结果返回给我们的浏览器,这个代理软件就起到了一个代理的作用,帮助我们发送请求,帮助我们接收响应. 2.代理的分类 正常情况下,我们使用…
Requests库的get()方法 requests.get(url, params=None, **kwargs) ∙ url : 拟获取页面的url链接 ∙ params : url中的额外参数,字典或字节流格式,可选 ∙ **kwargs: 12个控制访问的参数 爬去网页的通用代码框架 理解requests库的异常 HTTP协议以及Requests库方法…
最近在项目中写了一个接口自动化测试的脚本,想要写一些文章来一下,方便自己回头来温习,感兴趣的可以跟着看,先写关于requests库的一些基本操作,然后再写整个框架的搭建.使用的是Python3+requests库,框架使用了python3+requests库+unittests+HTMLTestRunner requests库实现了大部分http协议的功能,keep-Alive.连接池.Cookie持久化.内容自动化解压.http代理.SSL认证.连接超时.Session.文件上传等特性 req…
百度的关键词接口: http://www.baidu.com/s?wd=keyword 360的关键词接口: http://www.so.com/s?q=keyword keyword就是需要查找的关键词,我们只需要想办法替换它即可,方法构造url链接 import requests keyword = "Python" try: kv = {'wd':keyword} r = requests.get("http://www.baidu.com/s",params…
还是使用GitHub的接口,之前我们新增了邮箱,这次使用delete请求来删除邮箱,接口文档地址 import requests test_url = 'https://api.github.com' def get_url(url): return '/'.join([test_url,url]) email = '24xxxxx48@qq.com' def delete_email(): r = requests.delete(get_url('user/emails'),json = em…
使用data参数提交 设置邮件能见度,这个接口用来设置邮件是公共可见,还是私有的 import requests test_url = 'https://api.github.com' def get_url(url): return '/'.join([test_url,url]) payloda = {'email':'kxxxu@163.com', 'visibility':'private'} def email_visibility(): r = requests.patch(get_…
示例相应的接口文档:GitHub邮箱接口文档 先登录GitHub,然后右上角用户下拉框中选择settings,然后选Emails.可以看到当前账户设置的邮箱情况 再看添加邮箱接口的文档描述,可以通过一个str或者一个数组来添加一个,或多个邮箱 import requests test_url = 'https://api.github.com' def get_url(url): return '/'.join([test_url,url]) email = ['24xxx@qq.com','k…
1.请求携带参数的方式1.带数据的post data=字典对象2.带header的post headers=字典对象3.带json的post json=json对象4.带参数的post params=字典对象5.普通文件上传 files= files = {'file':open('filaname.txt','rb')}6.定制化文件上传 files= files = {'file':('filaname.png',open('filaname.png','rb'),'image/png')}…
1.request安装 1)pip安装,直接pip install requests 2)下载离线包安装,加压后,命令行进入路径,执行python setup.py install 2.创建工程 注意勾选Inherit global sit-packages,否则引用requests包时会报错 3.类封装及调用如下 # coding=utf-8 import requests import json class SendMain: # SendMain构造函数 def __init__(self…
因为http是没有状态的协议,上一个请求和下一个请求是没有关联.但是现实中又需要有关联,比如一个页面某个操作需要登陆之后才能进行,没有登陆就提示你登陆.为了实现这样的效果,所以出现了Cookie和Session这两种机制.这里的Session是指http的一种机制,和requests的会话对象是两个东西.Session机制不太清楚就不写了. Cookie机制原理 当浏览器第一次发送请求给服务器是没有带cookie的,当你登陆的时候,服务器会检查你的用户名和密码,发现确认有你这么一个用户,给出响应…
会话对象可以在跨请求保持某些参数,会话对象有requests api的大部分方法,我理解会话对象就是一个资源共享池 使用requests.Session()可以创建会话对象的实例 还是以之前GitHub的接口为例,之前文章在调用接口的时候,每次都需要做一个基本认证.那现在直接把这个基本认证放到会话对象里面,然后通过会话对象去调用接口. import requests s = requests.Session() s.auth = ('username','password') url1 = 'h…
在实际发布到生产上的接口测试代码,都会加上超时的设置,当服务器超过一定时间没有响应,会报出超时异常.因为requests会自动等待响应.如果不加上超时的设置,可能脚本会一直卡在那里.. 超时设置在请求中使用timeout参数 requests.get('http:github.com',timeout=0.01) 因为github是国外网站,0.01秒完成应答几乎不可能,所以会报提示超时异常 from requests import exceptions Ctrl点击exceptions可以看到…
实际登陆中,认证用到的token会变的,不过可以在GIthub设置一个私人token. 如图,登录GIthub,然后用户下面选择Settings/Developer settings/Personal access tokens,点击Generate new token,然后随便输个描述,勾选user这块,然后生成token.这个token可以理解为身份令牌.将生成的token保存下来. import requests Base_Url = 'https://api.github.com' de…
因为后续样例中GitHub都需要提供认证,所以先写关于基本认证的 http的请求中,有一些请求是需要通过授权认证之后才会响应,授权认证就是检查用户名和密码的过程.http有一个基本认证方式,在认证的过程中,客户端需要把用户名和密码发给服务器,服务器收到并检查通过后才会响应请求,不通过返回401状态码,提示未授权或者授权失败 以GitHub提供的查询用户信息的接口为例,需要有GitHub的账号,没有请自行注册先.GitHub用户接口文档 requests基本认证方式在请求中添加auth参数就行 i…
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议. HTTP协议每次只处理一个请求,服务器处理完客服的请求,并收到客户的应答后,就会断开连接.采用这种方式可以节省传输时间,HTTP协议是无状态的协议.无状态是指协议对于事务处理是没有记忆能力的.也就是后面的请求如果需要前面的信息,则必须把信息重新传一次 HTTP之URL HTTP使用统一资源标识符(Unif…
爬虫入门5个实例 实例1:京东商品页面的爬取 import requests def getHTMLText(url): try: r = requests.get(url,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "Something Wrong!!!" url = "https://item.jd.com/27528447…
起因是想爬五等分的花嫁的漫画.这是其中的一个坑 先上代码 data={ 'cid':567464, , 'key':'', 'language':1, 'gtk':6, '_cid':567464, '_mid':34949, '_dt':'2019-05-03 13:03:08', '_sign':'e74c8c52618a64a454dd7f12aff3cc1c' }def getFun(url,data): ret=requests.get(url,params=data) print(r…
Python爬虫笔记一(来自MOOC) 提示:本文是我在中国大学MOOC里面自学以及敲的一部分代码,纯一个记录文,如果刚好有人也是看的这个课,方便搬运在自己电脑上运行. 课程为:北京理工大学-嵩天-Python爬虫与信息提取 提示:多多自我发挥更有助于学习语言逻辑哦! @ 目录 Python爬虫笔记一(来自MOOC) 前言 一.嵩天老师课件给出的代码部分 1.京东商品页面的爬取 2.亚马逊商品页面的爬取 3.百度/360关键字提交 4.网络图片的爬取与储存 5.ip归属地的自动查询 二.个人运行…
一个接口基本都需要传入参数,有的参数必填,有的不必填. params参数 使用params参数来传递接口所需要的参数.一般用在get请求中,url参数是通过?拼接,?前面是接口的地址,之后是请求的参数,多个参数用&拼接.很多购物网站看商品的url都是这样的.这样的url参数页面跳转较快.但是get请求浏览器会有大小限制.如果超过了.那只能用post请求了.还有就是请求的参数都在url里看的到,不安全. data参数 使用data参数来提交表单,比如在post请求中.需要把data指向一个字典,字…