【发布时间】: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