如何在不使用浏览器的情况下使用Python打开URL?

时间:2011-12-23 16:27:13

标签: python mechanize urllib

我想用Python代码打开一个URL,但我不想使用“webbrowser”模块。我已经尝试了它并且它有效(它在我的实际默认浏览器中打开了URL,这是我不想要的)。所以我尝试使用urllib(urlopen)和机械化。他们两个都用我的程序运行良好,但他们都没有实际发送我的请求到网站!

以下是我的代码的一部分:

finalURL="http://www.locationary.com/access/proxy.jsp?ACTION_TOKEN=proxy_jsp$JspView$SaveAction&inPlaceID=" + str(newPID) + "&xxx_c_1_f_987=" + str(ZA[z])

print finalURL

print ""

br.open(finalURL)

page = urllib2.urlopen(finalURL).read()

当我进入siteary.com网站时,它没有显示已经进行了任何更改!当我使用“webbrowser”时,它确实在我提交我的网址后在网站上显示了更改。如何在不实际打开浏览器的情况下执行与webbrowser相同的操作?

我认为该网站需要“GET”

2 个答案:

答案 0 :(得分:1)

我不确定你正在使用什么操作系统,但是如果你使用httpscoop(mac)或fiddler(pc)或wireshark之​​类的东西,你应该能够观察流量并看看发生了什么。可能是网站进行了重定向(您的浏览器正在关注)或者还有其他一些后续活动。

启动HTTP嗅探器,使用Web浏览器发出请求并观察流量。完成后,尝试使用python脚本查看是否正在进行请求,以及HTTP流量的区别。这应该有助于确定断开连接的位置。

答案 1 :(得分:0)

HTTP GET在客户端不需要任何特定的代码或操作:它只是基本URL(http:// server /)+ path + optional query。

如果网址正确,则上述代码应该有效。一些指示你可以尝试下一步:

  1. 网址是否真的正确?使用Firebug或类似工具来监视网络流量,从而为您提供完整的URL以及HTTP请求中的任何标头字段。

  2. 首先,网站可能要求您登录。如果是这样,请确保正确设置Cookie。

  3. 某些网站需要正确的“引荐来源”字段(以防止深层链接)。添加浏览器用于请求的引荐来源标头。

  4. 服务器的日志文件是解决此类问题的重要信息来源 - 当您可以访问它时。