2

试图抓取一些数据,但首先我需要登录。我正在尝试使用python-requests,到目前为止,这是我的代码:

login_url = "https://www.wehelpen.nl/login/"
users_url = "https://www.wehelpen.nl/ik-zoek-hulp/hulpprofielen/"
profile_url = "https://www.wehelpen.nl/profiel/01136/hulpvragen/"

uname = "****"
pword = "****"


def main():
    s = login(uname, pword, login_url)
    page = s.get(users_url)
    print makeUTF8(page.text) # grab html and grep for logged in text to make sure!


def login(uname, pword, url):
    s = requests.session()
    s.get(url, auth=(uname, pword))
    csrftoken = s.cookies['csrftoken']
    login_data = dict(username=uname, password=pword,
                  csrfmiddlewaretoken=csrftoken, next='/')
    s.post(url, data=login_data, headers=dict(Referer=url))
    return s


def makeUTF8(text):
    return text.encode('utf-8')

基本上,我需要使用请求登录login_urlPOST使用csrf令牌,否则我会收到错误),然后使用从session传回的对象,我想通过向用户页面login()发出请求来检查我是否已登录。GET当我得到回报时——page.text然后我可以运行一个grep命令来检查某个href告诉我是否登录的命令。

所以,到目前为止,我无法登录并保持一个工作会话对象。谁能帮我?到目前为止,这是我一生中最乏味的 python 体验。

编辑。我已经搜索,搜索和搜索了答案,但没有任何工作......

4

2 回答 2

2

您需要为字典键提供正确的名称。请求库使用表单的 html 名称来查找正确的表单。在您的情况下,这些名称是标识和密码。

login_data = {'identification'=uname,'password'=pswrd...}
于 2013-09-13T20:53:19.000 回答
0

有很多选择,但我已经成功使用cookielib而不是尝试“手动”处理 cookie。

import urllib2
import cookielib
cookiejar = cookielib.CookieJar()
cookiejar.clear()
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
# ...etc...

有关设置此设置的一些潜在相关答案是关于 SO,包括:https ://stackoverflow.com/a/5826033/1681480

于 2013-09-11T23:57:13.987 回答