首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.x玩互联网

Python3.x玩互联网
EN

Stack Overflow用户
提问于 2012-05-14 22:39:52
回答 4查看 1.1K关注 0票数 1

我正在做一个小项目,以帮助我的工作更快地完成。我目前有一个用Python3.2编写的程序,它为我完成了几乎所有的体力劳动,只有一个例外。我需要登录公司网站(用户名和密码),然后选择月份和年份,然后单击下载。我想写一个小程序来帮我做到这一点,这样整个过程就完全由程序来完成了。

我已经研究过了,我只能找到2.X版本的工具,我已经研究过了urllib.request,我知道一些2.X版本的鼠标现在已经在urllib中了。

我甚至找到了一些代码来启动它,但我对如何将其付诸实践感到困惑。

这是我发现的:

代码语言:javascript
复制
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和他的页面:Basic Authentication

所以我稍微修改了一下代码,用'urllib.request‘替换了所有的'urllib2’。

然后我学会了如何打开网页,计算出程序应该打开网页,使用登录和密码数据打开页面,然后我将学习如何从其中下载文件。

代码语言:javascript
复制
ie = webbrowser.get('c:\\program files\\internet explorer\\iexplore.exe')
ie.open(theurl)

(我知道Explorer是垃圾,只是用它来测试,然后我就会使用crome ;)

但这并不会打开输入了登录数据的页面,它只是简单地打开页面,就像你输入了url一样。

如何让它使用密码句柄打开页面?我有点理解Michael是怎么做的,但我不确定该用哪个来打开这个网站。

还有一个事后的想法,我是否需要查看cookies?

耽误您时间,实在对不起

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-14 23:19:26

你在这里把事情搞混了。webbrowser是实际url浏览器的包装器,而urllib是一个用于http和url相关内容的库。他们彼此不认识,而且服务的目的也截然不同。

在以前的IE版本中,你可以这样编码HTTP Basic Auth用户名和密码:http(s)://Username:Password@Server/Ressource.ext -我相信火狐和Chrome仍然支持它,IE杀了它:http://support.microsoft.com/kb/834489/EN-US

如果你想模拟一个浏览器,而不是打开一个真正的浏览器,看看mechanizehttp://wwwsearch.sourceforge.net/mechanize/

票数 2
EN

Stack Overflow用户

发布于 2012-05-14 23:05:31

你的浏览器对你用python做的身份验证一无所知(这和你的浏览器是不是垃圾没有关系)。webbrowser模块只是提供了启动浏览器并将其指向and浏览器的方便方法。您不能将您的凭据“传输”到浏览器。

至于从python2迁移到python3:2to3工具可以自动转换简单的脚本。

票数 1
EN

Stack Overflow用户

发布于 2012-05-14 23:06:58

它们运行在不同的环境中。

您需要弄清楚单击download按钮时到底发生了什么。使用浏览器的开发工具来获取网站正在使用的POST格式。然后在python中构建一个请求来获取该文件。

Requests是一个很好的库,可以更容易地完成这类事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10585525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档