Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-下载重新定向并需要登录的链接_Python_Authentication_Python Requests - Fatal编程技术网

Python-下载重新定向并需要登录的链接

Python-下载重新定向并需要登录的链接,python,authentication,python-requests,Python,Authentication,Python Requests,我一直在为这个问题苦苦挣扎,希望有人能给我一些想法 我写了一个脚本从电子邮件下载链接。这在大多数情况下都很有效。大部分脚本只是解析电子邮件以获取链接,然后使用wget下载: link = '(https://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)>' pc = re.findall(link,searchtext) for l in pc: wget.download (l,

我一直在为这个问题苦苦挣扎,希望有人能给我一些想法

我写了一个脚本从电子邮件下载链接。这在大多数情况下都很有效。大部分脚本只是解析电子邮件以获取链接,然后使用wget下载:

link = '(https://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)>'
pc = re.findall(link,searchtext)

for l in pc:
    wget.download (l,path)
到目前为止,一切顺利

最近,该网站更改了链接指向的位置,现在需要身份验证。一个例子是链接

如果我运行该脚本,它会在最后生成大量错误,包括以下代码:

raise HTTPError(req.full_url, code,
urllib.error.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Found
所以我在浏览器中尝试了它,现在它重定向到请求身份验证

检查表单时会显示几个名为
session[email]
session[password]
的字段,一旦单击“登录”,它会在重定向到项目的各种登录页之前发布这些信息

我尝试先使用请求登录

import requests
s = requests.Session()
data = {"session[email]":"(email address here)", "session[password]":"(password here)"}
url = "https://login.procore.com/sessions"
r = s.post(url, data=data)
当我检查r时,我得到的响应是200。因此,我加载了第二个请求以获取响应401

import requests
s = requests.Session()
data = {"session[email]":"(email address here)", "session[password]":"(password here)"}
url = "https://login.procore.com/sessions"
r = s.post(url, data=data)
getfile="https://app.procore.com/783343/project/submittal_logs/document_downloader?attachment_id=2534930332&item_id=25772901&item_type=SubmittalLog&project_id=783343"
r1 = s.get(getfile)
这将返回一个401错误。我在登录后也尝试了wget方法,但仍然返回302

我认为这可能是一个cookie问题,所以我跟着做了,但也无法取出文件

再加上一堆其他脚本。所以我觉得我要么把事情复杂化了,要么我已经越过了关键点,完全错过了一些显而易见的事情,我会把头撞在桌子上半个小时

因此,如果有人对此有任何建议,将不胜感激。如果你已经走到了这一步,感谢你通读这本小说