我正在尝试使用cookies.txt
带有Python请求的文件(使用Chrome扩展程序生成)访问经过身份验证的网站:
import requests, cookielib
cj = cookielib.MozillaCookieJar('cookies.txt')
cj.load()
r = requests.get(url, cookies=cj)
它不会引发任何错误或异常,但是会错误地显示登录屏幕。但是,我知道我的cookie文件是有效的,因为我可以通过使用它成功地检索我的内容wget
。知道我在做什么错吗?
编辑:
我跟踪cookielib.MozillaCookieJar._really_load
,并且可以验证cookie被正确解析(即他们的正确的价值观domain
,path
,secure
等标记)。但是由于事务仍在生成登录表单,因此似乎wget
必须做其他事情(因为完全相同的cookies.txt
文件适用于它)。
MozillaCookieJar
继承自FileCookieJar
其构造函数中的以下docstring:
Cookies are NOT loaded from the named file until either the .load() or
.revert() method is called.
然后,您需要调用.load()
方法。
同样,就像Jermaine Xu一样,文件的第一行需要包含# Netscape HTTP Cookie File
或# HTTP Cookie File
字符串。您使用的插件生成的文件不包含这样的字符串,因此您必须自己插入它。我在http://code.google.com/p/cookie-
txt-export/issues/detail?id=5上
提出了适当的错误
编辑
会话cookie在第5列中保存为0。如果您不ignore_expires=True
使用load()
方法,则从文件加载时将丢弃所有此类cookie。
档案session_cookie.txt
:
# Netscape HTTP Cookie File
.domain.com TRUE / FALSE 0 name value
Python脚本:
import cookielib
cj = cookielib.MozillaCookieJar('session_cookie.txt')
cj.load()
print len(cj)
输出: 0
编辑2
虽然我们设法饼干放进瓶子上面,他们随后被丢弃的cookielib
,因为他们仍然有0
在价值expires
属性。为了避免这种情况,我们必须将到期时间设置为将来的某个时间,如下所示:
for cookie in cj:
# set cookie expire date to 14 days from now
cookie.expires = time.time() + 14 * 24 * 3600
编辑3
我同时检查了wget和curl,并都使用了0
过期时间来表示会话cookie,这意味着这是事实上的标准。但是,Python的实现出于相同目的使用空字符串,因此引发了问题。我认为Python在这方面的行为应与wget和curl的行为保持一致,这就是为什么我在http://bugs.python.org/issue17164引发该错误的原因,
我会注意到0
在第5栏中用空字符串替换s输入文件并传递ignore_discard=True
到load()
是解决问题的另一种方法(在这种情况下,无需更改有效时间)。
问题内容: 请求是一个非常不错的库。我想用它来下载大文件。问题是不可能将整个文件保留在内存中,我需要分块读取它。这是以下代码的问题 由于某种原因,它无法按这种方式工作。仍将响应加载到内存中,然后再将其保存到文件中。 更新 如果你需要一个小型客户端,可以从FTP下载大文件,则可以在此处找到它。它支持多线程和重新连接(它确实监视连接),还可以为下载任务调整套接字参数。 问题答案: 使用以下流代码,无论
问题内容: 我需要进行API调用,以上传文件以及带有有关文件详细信息的JSON字符串。 我正在尝试使用python请求库来执行此操作: 这将引发以下错误: 如果我从请求中删除“文件”,则它可以工作。 如果我从请求中删除了“数据”,它将起作用。 如果我不将数据编码为JSON,则可以使用。 因此,我认为错误与在同一请求中发送JSON数据和文件有关。 关于如何使它工作的任何想法? 问题答案: 不要使用j
问题内容: 我知道获取网址非常简单,我可以获取原始响应正文并将其保存到文件中,但是对于大型文件,是否可以直接流式传输到文件?就像我要下载电影或类似的东西吗? 问题答案: 奇怪的是,请求没有什么简单的方法。您必须遍历响应并将这些块写入文件: 我通常只是使用。它可以工作,但是如果您需要使用会话或某种身份验证,那么上面的代码也可以工作。
我正在执行使用Python请求库上传文件的简单任务。我搜索了Stack Overflow,似乎没有人遇到同样的问题,即服务器无法接收文件: 我正在用我的文件名填充upload_file关键字的值,因为如果我把它留空,它会说 现在我得到了 只有当文件为空时才会显示。所以我一直在思考如何成功地发送文件。我知道这个文件是有效的,因为如果我去这个网站手动填写表单,它会返回一个匹配对象的列表,这就是我想要的
问题内容: 是否可以使用Python的库发送SOAP请求? 问题答案: 确实有可能。 这是一个使用普通请求lib调用Weather SOAP Service的示例: 一些注意事项: 标头很重要。没有正确的标头,大多数SOAP请求将无法工作。可能是更 正确 使用的标头(但weatherservice更喜欢 这将以xml字符串形式返回响应-然后,您需要解析该xml。 为简单起见,我以纯文本形式包含了该
问题内容: 我在Node.js中使用POST请求上传文件时遇到问题。我必须使用模块来完成该操作(无需外部npms)。服务器需要它是包含文件数据字段的多部分请求。看起来很容易,但不使用任何外部模块就很难在Node.js中完成。 我尝试使用此示例,但未成功: 问题答案: 看起来您已经在使用module了。 在这种情况下,您需要发布的只是使用其功能: 但是,如果您想从文件系统中发布一些现有文件,则可以简