urllib2 重定向之后登陆,下载文件的思路

2015-09-10 13:04:06 +08:00
 cheerzeng
嗨,
最近有个活,写个脚本下载文件,然后这个链接用浏览器打开之后是会重定向到一个登陆页面的。
我现在的思路是先直接请求这个文档的链接,然后把返回的 cookie 存起来,接着再请求这个登录的页面,把表单的信息 post 过去,同时带上之前的 cookie.
不知道这个思路对不对,因为一直都没取到文档,只是得到了登录的页面。
3198 次点击
所在节点    Python
18 条回复
qq12365411
2015-09-10 16:14:09 +08:00
推荐用 requests 这个包 urllib2 不太会

至于你的思路

你可以用 Selenium

Selenium 可以让你用脚本,控制他打开浏览器,输入密码,登陆,然后点击按钮 ,下载
xavierskip
2015-09-10 16:22:57 +08:00
requests 库会自动帮你解决掉 302 重定向的问题。还有登陆 session 的问题。
hahastudio
2015-09-10 16:34:03 +08:00
可选(0. 访问下载文件的 URL )
1. 到登录页面, 登录,拿 cookie
2. 带着 cookie 访问下载文件的 URL
这样?
endoffight
2015-09-10 16:50:09 +08:00
小伙子我看你骨骼惊奇,天庭饱满,并非凡人乃是百年不遇的奇才,我这儿有一份下载脚本,给你看看

http://www.phpgao.com/yum-file-downloader.html
shidenggui
2015-09-10 16:52:25 +08:00
曾经的我也是使用 urllib2 ,直到我发现了 requests ,如果是批量的话推荐 scrapy
bdbai
2015-09-10 20:25:22 +08:00
@qq12365411 控制浏览器这个思路明显没有直接发请求来的好 浏览器出点什么只有人清楚
cheerzeng
2015-09-11 11:16:18 +08:00
@qq12365411 三种都试过, requests 好像跟 urllib2 差不多,可能 API 更加好用。
Selenium 的话遇到一个问题就是 IE 打开,会有弹出提示是否下载的窗口,这个貌似 selenium 解决不了,你有 idea 吗?
cheerzeng
2015-09-11 11:17:31 +08:00
@xavierskip urllib2 页是能解决重定向的问题,昨天的紧张是,发现 post 是到了一个 https 的服务器上面去了,有个.fcc 的函数管理这个 post.现在没什么头绪去处理这个
cheerzeng
2015-09-11 11:17:49 +08:00
@endoffight 谢谢,我试试
cheerzeng
2015-09-11 11:18:36 +08:00
@shidenggui 不需要批量,就是单次可以了,想把这个登录的问题处理之后再考虑 scrapy
qq12365411
2015-09-11 11:24:31 +08:00
@cheerzeng Selenium 可以 控制 chrome 火狐, 并且这 2 个浏览器 提供专门的 driver 建议弄 chrome ,具体请谷歌, 不要用 ie
cheerzeng
2015-09-11 11:43:05 +08:00
@qq12365411 我一开始用 selenium ,然后有什么 profile 问题, ff 一直没打开我的 url,问了一个做自动化的前辈,说建议用 IE , profile 没那么复杂。
chrome 没试过,我看能不能试试,
问一下, selenium 有下载文件的 API 吗,如果只是点击下载按钮的话,怎么确保文件已经完整下载了?
qq12365411
2015-09-11 12:29:28 +08:00
@cheerzeng 抱歉 我没有用过文件下载 你可以 搜索 selenium download file
cheerzeng
2015-09-11 16:28:04 +08:00
@qq12365411 chrome default profile 加载有问题,不过先不管他了,准备查一下下载文件看看有没有工具可以检查。目前这是最简单的方法了
firebroo
2015-09-12 18:42:22 +08:00
3 楼的做法可行啊。
cheerzeng
2015-09-13 14:05:41 +08:00
@hahastudio @firebroo 我也是这个思路。但是最近发现里面的登录页面, post 处理是一个 https 地址,目前不知道是哪个地址,所以之前一直往原来的地址发 post 应该是错的,导致拿不到 cookie
firebroo
2015-09-13 16:29:31 +08:00
@cheerzeng 可以用 burpsuite 抓包,把登陆验证的包抓下来。
cheerzeng
2015-09-14 10:10:11 +08:00
@firebroo 谢谢,我还没用过这个工具,我试试。

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

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

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

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

© 2021 V2EX