Python 能控制浏览器并交互吗?

2015-12-18 21:58:08 +08:00
 yuewolf
使用场景如下:
控制浏览器——哪个都行——登录 QQ 空间(太复杂了,菜鸟提交数据完全搞不定,唯一靠谱的 http://git.oschina.net/gerald/qqlib 已经失效),然后提取 cookie 。

当然,大牛有通过 post 成功获取的代码提供更好。
4821 次点击
所在节点    Python
29 条回复
quericy
2015-12-19 00:00:24 +08:00
个人觉得 LZ 这种情况写个 chrome 扩展进行模拟登录可能会更容易点
g00001
2015-12-19 01:03:09 +08:00
aardio 控制浏览器很简单, http://www.visualget.com/ 这个就是 aardio 开发的, 这已经做成一个生成这类程序的开发工具了。里面就有 QQ 空间登录发说说的。
Stargi
2015-12-19 01:13:01 +08:00
yuewolf
2015-12-19 03:11:09 +08:00
@Stargi 哈哈,成功登陆了。而且它一个 browser.cookies.all()直接就把 cookie 给取回来了。


@hansnow splinter 应该是基于 selenium 的, selenium 肯定也能搞定。

多谢啦~
msg7086
2015-12-19 04:36:32 +08:00
直接用无头浏览器组件还是很方便的。
做网站自动化测试的时候也会用到浏览器模拟提交,用到的技术是类似的。

扩展阅读:
PhantomJS - Webkit
Slimer.js - Gecko
CasperJS - 另一个 JS 运行环境
thomaspaine
2015-12-19 20:51:14 +08:00
robotframework
适合懒人
anexplore
2015-12-20 00:00:06 +08:00
selenium webdriver
yuewolf
2015-12-22 16:47:03 +08:00
@msg7086 @Stargi 请教一个问题:
browser.find_by_id('go').first.click()
#get the session cookie
#time.sleep(1)
theCookies = browser.cookies.all()
mystr = ";".join(["%s=%s" % (k, v) for k, v in theCookies.items()])
print mystr
如果浏览器用 Firefox ,模拟点击之后打开新页面,然后获取登录后的 Cookie 。可是用 PhantomJS 或者 Chrome 获取的都是登录前的 Cookie ,必须上面那样 sleep 1 - 2 秒等页面打开才可以。
msg7086
2015-12-23 00:00:08 +08:00
@yuewolf 没怎么用过 Python 不太清楚你的问题。
如果是点击以后获取 Cookie 的话,当然应该等服务器返回新的 Cookie 以后再获取咯。
你看看有没有页面载入完毕的回调事件之类的东西吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX