我正在尝试用BeautifulSoup刮一个网站。该网站需要登录。在
https://www.bahn.de/p/view/meinebahn/login.shtml
通过研究web,我了解到获得授权的一个正确方法是使用requests
。在
我的代码如下所示:
url = 'https://www.bahn.de/p/view/meinebahn/login.shtml'
header = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit 537.36 (KHTML, like Gecko) Chrome","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp ,*/*;q=0.8"}
user = "username"
pwrd = "password"
response = requests.post(url,headers = header, auth=(user, pwrd))
page = requests.get('https://fahrkarten.bahn.de/privatkunde/meinebahn/meine_bahn_portal.go?lang=de&country=DEU#stay')
soup = BeautifulSoup(page.text, 'html.parser')
不幸的是,soup
是一个html文本,其中声明“您已从我们的系统中注销”。虽然response
的结果是<Response [200]>
我有点纠结于auth
有两个原因:
如果我真的想理解它,任何帮助都会很感激,而且我显然是“新手”从手册中得到正确的结论(例如http://docs.python-requests.org/en/master/user/authentication/)
了解网站身份验证如何工作的最简单方法是在登录时捕获流量,并找出幕后发生了什么:使用了哪个URL,提交了哪些数据等。在
您可以使用
fiddler
或charles
,或最方便的Chrome Dev工具(由F12启动),如下所示:在您的情况下,整个请求是:
最重要的是,由于cookie用于身份验证/验证,因此整个过程需要一个会话以及以后用于访问只有登录用户才能访问的其他网页。在
^{pr2}$很可能是因为您请求了错误的页面,请查看登录页面中的表单:
您应该请求带有
username
和password
字段的页面https://fahrkarten.bahn.de/privatkunde/start/start.post
。保留请求给你的东西!(代币等)再见!在
相关问题 更多 >
编程相关推荐