从 Python 中打开的登录表单保存 Web 会话

问题描述 投票:0回答:1

我正在为一个需要网络抓取的小型应用程序编写一个 Python 脚本。我想要的内容位于登录屏幕后面,但由于网页的性质(以及我的用例),我更愿意向用户呈现实际的登录屏幕,而不是发布 Python 脚本中保存的变量。

有没有一种方法可以在窗口中向用户展示网站的官方登录页面并捕获会话以在我的程序中使用(使用 Requests、Eel、Electron 或类似的)?

POSTLOGINURL = 'www.example.com/login'
REQUESTURL = 'www.example.com/page_to_scrape'

    payload = {'username': 'myusername', 'password': 'mypassword'}

    with requests.Session() as session:
        post = session.post(POSTLOGINURL, data=payload)
        t = print(session)
        r = session.get(REQUESTURL)
        print(r.text)

REQUESTURL 页面(看似已登录)打印为“识别我的数字身份”页面,通常会使用浏览器中的 JavaScript 重定向到所请求的页面。有没有办法使用上面的工具或类似的工具来解决这个问题(验证只发生一次)?

python web-scraping python-requests
1个回答
1
投票

登录会话可能存储在 cookie 中。 这样就可以保存cookie信息了。

with requests.Session() as session:
        post = session.post(POSTLOGINURL, data=payload)
        t = print(session)
        r = session.get(REQUESTURL)
        cookie = session.cookie
        with open('somefile', 'wb') as f:
            pickle.dump(cookie, f)

然后下次只需将文件加载到会话中即可。

session = requests.session()
with open('somefile', 'rb') as f:
    session.cookies.update(pickle.load(f))
© www.soinside.com 2019 - 2024. All rights reserved.