2017-03-04 105 views
0

HELLO我现在想从一个需要登录的网站信息。如何通过在python中使用请求来设置cookie?

但我已经得到的reqeustURL,我应该发布一些ID,密码和请求200响应。

标题字典具有可在Chrome开发人员网络抽头中看到的requests_headers。表单数据字典有ID和密码。

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

我得到了200

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

1.会议。

,当我试图用会话设置cookies,我失败了。我听说当我抓取其他需要登录的页面时,会话可以设置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的

我做手工饼干字典,我可以得到

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

我也有403

其实,我不知道我应该写什么饼干字典。当我得到时,'wcs_bt = AAA; _production_session_id = BBB; _ga = CCC;”,我是否应该将其更改为dict {'wcs_bt':'AAA'..}? 当我饼干

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

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

不知怎的,我也失败了它。

我该如何刮饼干?

+0

登录后,网站可能会将您重定向到另一个实际负责设置Cookie的页面,并且您的脚本永远不会触及该页面。也有可能他们阻止了你,因为你的用户代理被设置为Python/Requests。如果没有关于您想要抓取哪个网站的更多信息,则无法提供更多信息,但对于记录,如果您想自动保存cookie,则一定要使用requests.Session。 –

+0

感谢您的评论。我如何知道负责设置cookie的实际页面?我想刮掉的网站是'https://engoo.co.kr/'。 – dizwe

回答

0

刮现代(2017年大约或更高版本)的网站,需要登录可能会非常棘手,因为它很可能是在登录过程中的一些重要部分在Javascript中实现。

除非您执行的Javascript正是因为浏览器会,您将无法完成登录。不幸的是,基本的Python库不会有帮助。

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

相关问题