【问题标题】:How can I set the cookie by using requests in python?如何通过在 python 中使用请求来设置 cookie?
【发布时间】:2017-03-04 11:18:45
【问题描述】:

您好,我现在正在尝试从需要登录的网站获取信息。

但我已经在 reqeustURL 中收到 200 响应,我应该在其中发布一些 ID、密码和请求。

headers dict 有 requests_headers 可以在 chrome developer network tap 中看到。表单数据字典有 ID 和密码。

login_site = requests.post(requestUrl, headers=headers, data=form_data)
status_code = login_site.status_code print(status_code)

我有 200 个

下面的代码是我尝试过的方式。

1.会话。

当我尝试使用会话设置 cookie 时,我失败了。我听说当我抓取其他需要登录的页面时,会话可以设置 cookie。

session = requests.Session()
session.post(requestUrl, headers=headers, data=form_data)
test = session.get('~~') #the website that I want to scrape
print(test.status_code)

我得到了 403

2.手动设置 cookie

我手动制作了我可以得到的 cookie 字典

cookies = {'wcs_bt':'...','_production_session_id':'...'}
r = requests.post('http://engoo.co.kr/dashboard', cookies = cookies)
print(r.status_code)

我也得到了 403

实际上,我不知道应该在 cookies dict 中写什么。当我得到时,'wcs_bt=AAA; _production_session_id=BBB; _ga=CCC;',我应该把它改成 dict {'wcs_bt':'AAA'.. } 吗? 当我得到 cookie 时

login_site = requests.post(requestUrl, headers=headers, data=form_data)
print(login_site.cookies)

在这段代码中,我只能得到 RequestsCookieJar[Cookie _production_session_id=BBB]

不知何故,我也失败了。

如何用 cookie 抓取它?

【问题讨论】:

  • 登录后,网站可能会将您重定向到另一个实际负责设置 cookie 的页面,而您的脚本永远不会访问该页面。他们也有可能因为您的用户代理设置为 Python/Requests 而阻止了您。如果没有关于您尝试抓取哪个站点的任何进一步信息,就不可能给您更多信息,但作为记录,如果您想自动保存 cookie,您绝对应该使用 requests.Session。
  • 感谢您的评论。我如何知道负责设置 cookie 的实际页面?我想抓取的网站是“engoo.co.kr”。

标签: python cookies python-requests


【解决方案1】:

抓取需要登录的现代(大约 2017 年或更晚)网站可能非常棘手,因为登录过程的某些重要部分可能是用 Javascript 实现的。

除非您完全按照浏览器的方式执行该 Javascript,否则您将无法完成登录。不幸的是,基本的 Python 库无济于事。

考虑Selenium with Python,它用于测试网站,但可用于自动化与网站的任何交互。

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2020-06-18
    • 2011-03-21
    • 2014-10-19
    • 2012-10-11
    • 2021-12-18
    • 2020-09-26
    • 2012-12-22
    • 2015-10-11
    相关资源
    最近更新 更多