我正在做一个小项目来帮助我的工作更快地进行。我目前有一个用 Python 3.2 编写的程序,它为我完成了几乎所有的体力劳动,但有一个例外。我需要登录公司网站(用户名和密码),然后选择月份和年份,然后单击下载。我想写一个小程序来帮我做,这样整个过程完全由程序来完成。
我已经研究过了,我只能找到 2.X 的工具。我研究了 urllib,我知道一些 2.X 模块现在在 urllib.request 中。
我什至找到了一些代码来启动它,但是我对如何将它付诸实践感到困惑。
这是我发现的:
import urllib2
theurl = 'http://www.someserver.com/toplevelurl/somepage.htm'
username = 'johnny'
password = 'XXXXXX'
# a great password
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
# this creates a password manager
passman.add_password(None, theurl, username, password)
# because we have put None at the start it will always
# use this username/password combination for urls
# for which `theurl` is a super-url
authhandler = urllib2.HTTPBasicAuthHandler(passman)
# create the AuthHandler
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
# All calls to urllib2.urlopen will now use our handler
# Make sure not to include the protocol in with the URL, or
# HTTPPasswordMgrWithDefaultRealm will be very confused.
# You must (of course) use it when fetching the page though.
pagehandle = urllib2.urlopen(theurl)
# authentication is now handled automatically for us
全部归功于 Michael Foord 和他的页面:基本身份验证
所以我稍微改变了代码,用 'urllib.request' 替换了所有的 'urllib2'
然后我学会了如何打开网页,确定程序应该打开网页,使用登录名和密码数据打开页面,然后我将学习如何从中下载文件。
ie = webbrowser.get('c:\\program files\\internet explorer\\iexplore.exe')
ie.open(theurl)
(我知道资源管理器是垃圾,只是用它来测试然后我将使用 crome ;))
但这不会打开输入登录数据的页面,它只是打开页面,就像您输入了 url 一样。
如何使用密码句柄打开页面?我有点理解迈克尔是如何制作它们的,但我不确定使用哪个来实际打开网站。
还有一个事后的想法,我可能需要研究 cookie 吗?
谢谢你的时间