广告
返回顶部
首页 > 资讯 > 后端开发 > Python >requests上传文件Cookies设置
  • 485
分享到

requests上传文件Cookies设置

上传文件requestsCookies 2023-01-30 23:01:47 485人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

有的网站需要上传文件,requests也是可以实现的import requests files = {'file': open('favicon.ico', 

有的网站需要上传文件,requests也是可以实现的

import requests

files = {'file': open('favicon.ico', 'rb')}
r = requests.post('Http://httpbin.org/post', files=files)
print(r.text)

返回信息:

image.pngimage.png

里面包含files字段,而fORM字段为空,上传文件会单独有一个files字段来标识



Cookies

requests获取和设置Cookies只需要一步完成

import requests

r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
    print('key', key)
    print('value', value)

返回信息:

<RequestsCookiejar[<Cookie BDORZ=27315 for .baidu.com/>]>

key BDORZ

value 27315


当前,也可以直接用Cookie来维持登陆状态,以知乎为例,首先手动登陆知乎,将headers中的Cookie内容复制下来,如下

image.png


替换成自己的Cookie,将其设置到Headers里面,然后发送请求,代码如下:

import requests
from lxml import etree

headers = {
    'Cookie': '_zap=f4035a0b-8bfb-48a5-aa70-b7d8f4869ba1; d_c0="ANCiqSDGFQ-PTtCXuKtT4JGPAeK9D1cRg6o=|1551939261"; _xsrf=2pscD3eR3N0O9jzliq2mz10TV2GgjiS1; l_n_c=1; q_c1=595a8a7635b94542b6b1c2c38ebbbf47|1556768730000|1551953498000; n_c=1; __utmc=51854390; l_cap_id="NmM5ZTFkNMQ0ZThkNGI0NDhiYmVmNjk2N2NlYTI0MjY=|1556779328|650703f96dd8d8a37edaad8d5e0881387e4b741b"; r_cap_id="YzdmODU3NDgyZmExNGRiYjlmY2Q4ZTRkZTU1OGM0ZTk=|1556779328|d53af2805f0470f6094cd6f89d77e5e951613f52"; cap_id="YmE4ZWUxNWQzYTUzNGRioGIxMWRmZTdkZjgzOTIxY2Q=|1556779328|ee07cf5f16741ec8adf2260f5ee5b4721eee368d"; tgw_l7_route=060f637cd101836814f6c53316f73463; capsion_ticket="2|1:0|10:1556784084|14:capsion_ticket|44:OWQ1NWFhZWFkYjE3NDEyYmI1OTk5MjhmMDllZTQ5Y2M=|1e096bca37010e87064d5f808f1e751d91360682533003571a4831f394762b52"; z_c0="2|1:0|10:1556784104|4:z_c0|92:Mi4xZUtBQUJnQUFBQUFBMEtLcElNWVZEeVlBQUFCZ0FsVk42UEczWFFEZ3lsNlhuMWVSaE5ya3VyUkJwcFltWEVRNmJn|3cd3acf0dc8fd2d29d2d49bb0e1be9336228f3acefe04ffc0285def38ff993b3"; __utma=51854390.1875686252.1556768732.1556779331.1556784108.3; __utmb=51854390.0.10.1556784108; __utmz=51854390.1556784108.3.2.utmcsr=zhihu.com|utmccn=(referral)|utmcmd=referral|utmcct=/signin; __utmv=51854390.100--|2=reGIStration_date=20170921=1^3=entry_date=20170921=1',
    'Host': 'www.zhihu.com',
    'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}

r = requests.get('https://www.zhihu.com', headers=headers).content.decode('utf-8')
# 使用xptah解析html页面,获取登陆后的文章标题
content = etree.HTML(r)
tag_list = content.xpath("//a[@data-za-detail-view-element_name='Title']/text()")
print(tag_list)

返回信息:

['有哪些好用不火的软件?', '你见过最渣的渣女有多渣?', '三十岁左右的你,现在收入多少?', '如果好莱坞来拍《流浪地球》应该如何?', '你们看到过最丧的句子是什么?', '亲姐弟之间要不要避嫌?']



当前也可以通过cookies参数来设置,需要构造RequestsCookieJar对象,需要分割一下cookies,相对麻烦,不过效果是相同的,代码如下:

import requests
from lxml import etree

cookies = '_zap=f4035a0b-8bfb-48a5-aa70-b7d8f4869ba1; d_c0="ANCiqSDGFQ-PTtCXuKtT4JGPAeK9D1cRg6o=|1551939261"; _xsrf=2pscD3eR3N0O9jzliq2mz10TV2GgjiS1; l_n_c=1; q_c1=595a8a7635b94542b6b1c2c38ebbbf47|1556768730000|1551953498000; n_c=1; __utmc=51854390; l_cap_id="NmM5ZTFkNmQ0ZThkNGI0NDhiYmVmNjk2N2NlYTI0MjY=|1556779328|650703f96dd8d8a37edaad8d5e0881387e4b741b"; r_cap_id="YzdmODU3NDgyZmExNGRiYjlmY2Q4ZTRkZTU1OGM0ZTk=|1556779328|d53af2805f0470f6094cd6f89d77e5e951613f52"; cap_id="YmE4ZWUxNWQzYTUzNGRiOGIxMWRmZTdkZjgzOTIxY2Q=|1556779328|ee07cf5f16741ec8adf2260f5ee5b4721eee368d"; tgw_l7_route=060f637cd101836814f6c53316f73463; capsion_ticket="2|1:0|10:1556784084|14:capsion_ticket|44:OWQ1NWFhZWFkYjE3NDEyYmI1OTk5MjhmMDllZTQ5Y2M=|1e096bca37010e87064d5f808f1e751d91360682533003571a4831f394762b52"; z_c0="2|1:0|10:1556784104|4:z_c0|92:Mi4xZUtBQUJnQUFBQUFBMEtLcElNWVZEeVlBQUFCZ0FsVk42UEczWFFEZ3lsNlhuMWVSaE5ya3VyUkJwcFltWEVRNmJn|3cd3acf0dc8fd2d29d2d49bb0e1be9336228f3acefe04ffc0285def38ff993b3"; __utma=51854390.1875686252.1556768732.1556779331.1556784108.3; __utmb=51854390.0.10.1556784108; __utmz=51854390.1556784108.3.2.utmcsr=zhihu.com|utmccn=(referral)|utmcmd=referral|utmcct=/signin; __utmv=51854390.100--|2=registration_date=20170921=1^3=entry_date=20170921=1'
jar = requests.cookies.RequestsCookieJar()
headers = {'Host': 'www.zhihu.com',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
           }
for cookie in cookies.split(';'):
    key, value = cookie.split('=', 1)
    jar.set(key, value)

r = requests.get('https://www.zhihu.com', cookies=jar, headers=headers).content.decode('utf-8')
# 使用xptah解析html页面,获取登陆后的文章标题
content = etree.HTML(r)
tag_list = content.xpath("//a[@data-za-detail-view-element_name='Title']/text()")
print(tag_list)

返回信息:

['你认为真正的好电影是什么样的?', '一个程序员的水平能差到什么程度?', '有什么是你面试很多次都失败后才知道的?', '一个人健身前和健身后有什么区别?', '香港警察真的像TVB演的那样吗?', '炫富真的很爽吗?']


测试后,同样是可以登录知乎的。



会话维持

在requests中,如果直接利用get()或post()等方法的确可以做到模拟网页请求,但这实际上是相当于不同的会话,其实相当于你用了两个浏览器打开了不同的页面。

设想一个场景,第一个请求利用post()方法登录了网站,第二次想获取成功登陆后的个人信息,又用了一次get()方法请求个人信息页面,这就相当于打开了两个浏览器,是完全两个不同的会话,肯定不能获取个人信息的。

解决这个问题的方法就是维持同一个会话,也就是相当于打开一个新的浏览器选项卡,而不是打开一个新的浏览器,需要用到新的利器Session对象。

利用它,可以方便的维护同一个会话,而不用担心cookies的问题

错误示例如下

import requests

r1 = requests.get('http://httpbin.org/cookies/set/username/root')
print(r1.text)
r2 = requests.get('http://httpbin.org/cookies')
print(r2.text)

返回信息:

image.png

从显示的结果来看,很明显是两次请求


Session的使用,正确的示例:

import requests

s = requests.Session()
r1 = s.get('http://httpbin.org/cookies/set/username/root')
print(r1.text)
r2 = s.get('http://httpbin.org/cookies')
print(r2.text)

返回信息:

image.png

利用Session可以做到模拟同一个会话而不用担心cookies的问题,通常用于模拟登陆成功之后再进行下一步的操作。

--结束END--

本文标题: requests上传文件Cookies设置

本文链接: https://www.lsjlt.com/news/180795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • requests上传文件Cookies设置
    有的网站需要上传文件,requests也是可以实现的import requests files = {'file': open('favicon.ico', ...
    99+
    2023-01-30
    上传文件 requests Cookies
  • MediaWiki上传文件大小设置
    MediaWiki默认最大上传文件大小为2M,碰到文件较大需要修改这个限制,需要改为8M。 使用docker运行的MediaWiki,默认是没有php.ini这个文件的。默认的php配置文件路径为:/usr/local/etc/p...
    99+
    2023-01-31
    文件大小 上传 MediaWiki
  • 用Python的requests库实现自动上传文件
    女朋友下班后听她吐槽自己领导安排了一件又要让她加班的工作。大致任务是:在公司网址上为近10万客户上传签订的合同的基础信息并上传对应的资料附件。月底前必须完成,人工一天才传了1000左右,按这个节奏根本...
    99+
    2023-09-09
    python 开发语言
  • python requests完成接口文件上传的案例
    最近在准备一个公开课,主题就是利用不同的语言和不同的工具去实现文件的上传和下载。 在利用Jmeter去实现功能的时候,以及利用loadrunner去写脚本的时候,都很顺利,没有任何问...
    99+
    2022-11-11
  • 怎么设置cookie实现文件上传
    这篇文章主要讲解了“怎么设置cookie实现文件上传”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置cookie实现文件上传”吧!文件上传实例HTML设置上传文件的表单需要设置&nbs...
    99+
    2023-06-08
  • PHP文件上传大小怎么设置
    在PHP中,文件上传大小可以通过以下几种方式进行设置:1. 在php.ini文件中设置:- 找到php.ini文件(可以通过phpi...
    99+
    2023-10-12
    PHP
  • IIS 7 中设置文件上传大小限制设置方法
    在IIS 6.0中设置文件上传大小的方法,就是配置如下节点: 复制代码 代码如下:<system.web><httpRuntime maxRequestLength...
    99+
    2022-11-15
    文件大小 大小限制
  • Asp.Net上传文件并配置可上传大文件的方法
    ASP.NET 包含两个控件可以使用户向网页服务器上传文件。一旦服务器接受了上传的文件数据,那么应用程序就可以进行保存,进行检查或者忽略它。 HtmlInputFile -...
    99+
    2022-11-13
  • tomcat上传文件大小限制怎么设置
    要设置Tomcat上传文件的大小限制,可以通过以下步骤进行操作: 打开Tomcat的配置文件`server.xml`。该文件通常...
    99+
    2023-10-26
    tomcat
  • php如何设置上传文件大小限制
    这篇文章将为大家详细讲解有关php如何设置上传文件大小限制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法:首先打开“php.ini”文件;然后将“upload_max_filesize”、“post_...
    99+
    2023-06-14
  • SpringBoot文件上传大小设置方式(yml中配置)
    目录文件上传大小设置上传文件大小yml参数配置解决方法文件上传大小设置 #文件大小 MB必须大写 #  maxFileSize 是单个文件大小 #  maxRequestSize是设...
    99+
    2022-11-13
  • python 使用第三方库requests-toolbelt 上传文件流的示例
    python 使用第三方库requests-toolbelt 上传文件流,内容如下所示: # pip install requests-toolbelt 使用第三方库上传文件流 f...
    99+
    2022-11-11
  • python使用requests提交post请求并上传文件(multipart/form-data)
    目录 一、背景 二、请求接口上传文件         2.1、分析接口         2.2、python进行请求 三、总结 一、背景         也是前几天,有一个需求上传文件需要自动化。具体是上传到系统一个文件,并收到返...
    99+
    2023-09-04
    python 爬虫
  • jQuery.Form如何实现Ajax上传文件同时设置headers
    小编给大家分享一下jQuery.Form如何实现Ajax上传文件同时设置headers,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实例代码: <span >...
    99+
    2022-10-19
  • SpringBoot中的multipartResolver上传文件配置
    目录multipartResolver上传文件配置1、gradle配置2、注册BeanSpringBootMultipartResolver的坑解决方案multipartResolv...
    99+
    2022-11-12
  • SpringMVC 单文件上传与多文件上传实例
    一、简述一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。二、单文件上传1、...
    99+
    2023-05-31
    springmvc 文件上传 多文件上传
  • SpringBoot文件上传大小设置方式的示例分析
    这篇文章主要介绍SpringBoot文件上传大小设置方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文件上传大小设置#文件大小 MB必须大写#  maxFileSize&nb...
    99+
    2023-06-29
  • ThinkPHP6 文件上传
    内置文件上传使用\think\facade\Filesystem类封装方法 目录 简单上传 public存储文件  文件验证 命名规则 使用sha1 使用MD5 使用date 指定文件名称 自定义命名规则 更多上传设置 总结   ...
    99+
    2023-09-14
    php thinkPHP 文件上传
  • PHP---文件上传
    目录 一、文件上传的概念 二、文件上传的步骤 (1)表单的制作 三、$_FILES详解 (1)name (2)tmp_name (3)type (4)error (5)size  四、移动临时文件到目标位置  五、多文件上传 (1)同名表单...
    99+
    2023-09-03
    服务器 运维 php
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作