Python请求授权

时间:2017-07-04 04:29:25

标签: python authentication cookies web-scraping

为了税收目的,我需要提取一些网站信息,不幸的是," export"功能不能提供我需要的所有信息。该信息确实存在于网站上,作为250多个网页中每个网页中的单个字段。我可以点击每一个并保存所有内容并使用脚本处理它们,但我宁愿学习一些东西。

{ echo 'scale=2.0' echo 'in(pdb,file="../'"$i"'.ab.pdb")' echo 'in(siz,file="charmm.siz")' echo 'in(crg,file="charmm.crg")' echo 'indi=z' echo 'exdi=x' echo 'prbrad=y' } > $i.ab.sh ./software <$i.ab.sh >$i.ab.out 一揽子计划本身就是天赐之物,尽管我并不坚持这一点。问题是我必须登录我的网站。 <table border="1" cellspacing="0" > 的文档包含this link on authentication,记录了各种形式的身份验证,但不包含有关如何判断我的网站实际使用哪种身份验证形式的信息。当我登录网站时,我认为某种cookie会被放在我的计算机上,理论上,我可以在我的硬盘上找到它并将其与我的请求一起发送,但我接下来没有使用cookies的经验和/或授权,不知道发送什么。

如果我可以向网址列表发出一批请求,所有这些请求都在同一个网站上,并且只下载html,我可以处理它并构建报告。

在您的回复中,如果有关于http身份验证和Cookie如何协同工作的一般知识的链接,我也很乐意阅读它。

非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

我正在使用BasicAuth,因为它是最常见的Auth形式;您可以通过查看documentation

将其更改为任何其他形式

使用以下作为“基本代码”,您可以创建要访问的list dict urls并循环播放它们。上面的代码还可以省去“在硬盘上找到cookie并加载它们”的麻烦。

  

编辑:看完OP的评论后:

import requests

login_url = "https://www.wyzant.com/sso/login"    # this is the login for's action url, extracted it from the source code

payload = {
    "Username" : "<username>",
    "Password" : "<password>"
}
with requests.Session() as s:
    r = s.post(login_url, data=payload)
    cookies = r.cookies
    r = s.get(url, cookies=cookies)    # do whatever

我已经尝试了上面的确切代码,效果很好,我可以登录并访问学生仪表板。

干杯。