Python-下载重新定向并需要登录的链接
我一直在为这个问题苦苦挣扎,希望有人能给我一些想法 我写了一个脚本从电子邮件下载链接。这在大多数情况下都很有效。大部分脚本只是解析电子邮件以获取链接,然后使用wget下载: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,
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问题,所以我跟着做了,但也无法取出文件
再加上一堆其他脚本。所以我觉得我要么把事情复杂化了,要么我已经越过了关键点,完全错过了一些显而易见的事情,我会把头撞在桌子上半个小时
因此,如果有人对此有任何建议,将不胜感激。如果你已经走到了这一步,感谢你通读这本小说