Python 脚本正在抓取错误的页面源代码。我认为它无法正确登录?



这个脚本成功地获得了一个200响应对象,获得了一块cookie,并返回了reddit的股票主页源。然而,它应该得到"最近活动"子页面的来源,只有在登录后才能访问。这让我认为它没有正确登录,但用户名和密码是准确的,我已经仔细检查过了。

#!/usr/bin/python
import requests
import urllib2
auth = ('username', 'password')
with requests.session(auth=auth) as s:
    c = s.get('http://www.reddit.com')
    cookies = c.cookies
    for k, v in cookies.items():
            opener = urllib2.build_opener()
            opener.addheaders.append(('cookie', '{}={}'.format(k, v)))
            f = opener.open('http://www.reddit.com/account-activity')
            print f.read()

看起来您使用的是标准的"HTTP Basic"身份验证,而不是Reddit用来登录其网站的身份验证。(几乎没有网站使用HTTPBasic(它会弹出一个请求身份验证的模式对话框),但实现了自己的用户名/密码表单)。

您需要做的是获取主页,读取登录表单字段,填写用户名和密码,将响应POST回网站,获取结果cookie,然后在未来的请求中使用cookie。可能还有很多其他细节需要你去解决,但你必须进行实验。

我只是觉得我们可能遇到了同样的问题。我的状态代码是200。但脚本从未让我登录。我得到了一些建议和帮助。希望你也能告诉我什么对你有用。看来reddit也在使用同样的系统。

看看这个讨论我问题的页面。使用aspx站点上的请求的身份验证问题

最新更新