想写个自动顶帖的脚本, 打算用 selenium webdriver 实例 的 execute_script 功能 回帖需要先登录,我就把 cookie 写在 headers 里面 这时才发现 selenium 好像不能加 headers ,那该怎么办?
之前试了一下 requests.get(),得到的是<Response [200]=""> 所以就没有想过 requests.post()了
1
ltux 2016-08-21 18:50:18 +08:00
不要直接用 requests.get() 和 requests.post(),这俩函数需要你手工管理 cookie 。请使用 requests.Session 类,可自动管 cookie ,用法也很简单,具体可看文档 http://docs.python-requests.org/en/master/user/advanced/#session-objects
|
2
ltux 2016-08-21 18:53:35 +08:00
如果是用 selenium webdriver 的话, 也不需要手工管理 cookie 吧,这事儿浏览器就帮你做了
|
3
ltux 2016-08-21 18:58:38 +08:00
"那该怎么办?" 使用 selenium webdriver 在登陆页输入登陆信息然后调用 submit() 或者 click() 提交表单就行了吧
|
4
jason52 2016-08-21 21:54:46 +08:00 via Android
直接录制一下脚本,然后转成 Python 最简单。
|
5
hebwjb 2016-08-21 22:03:23 +08:00 1
selenium 不需要关注什么 headers 、 cookie 之类的,完全模拟人工操作,定位元素、输入账号密码登录就可以了
|
9
okampfer 2016-08-22 09:08:45 +08:00
@katyang Selenium 会启动浏览器窗口并进行操作, requests 是发送和处理 http 请求。前者有界面更重量级,后者无界面更轻量级。前者因 selenium 本身缺陷可能不太稳定且费时,后者方便快捷。前者更接近真实用户操作(浏览器和用户的交互)常用于 UI 自动化测试,后者更 geek 更接近浏览器和服务器交互的本质。
录制和转换的话用 Firefox 的插件 SeleniumIDE 即可。 以我的经验,除非你想做 UI 测试,否则不需要用 selenium 。打开开发者工具研究 http 请求的规律用 requests 复现整个过程就行了。 |
10
jetyang 2016-08-22 09:32:36 +08:00
google 一下 selenium browsermob proxy 有惊喜
|
11
practicer 2016-08-22 13:21:07 +08:00
正在写 phantomJS + header :
dcap = dict(DesiredCapabilities.PHANTOMJS) dcap['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0' driver = webdriver.PhantomJS('path/to/PhantomJS', desired_capabilities=dcap) driver.get(<your_url>) 虽然加了 header 信息,但最后发现不加 header 目标网站也让我爬 |
12
thekoc 2016-08-22 14:12:43 +08:00
好像可以用浏览器的插件管理 headers
|
13
twocucao 2016-08-27 10:12:19 +08:00
我之前是通过 Python 脚本调用执行 Phantomjs 的 Js 脚本的.
|