2011-12-23 126 views
0

我想用Python代碼打開一個URL,但我不想使用「webbrowser」模塊。我試過了,它已經工作了(它在我的實際默認瀏覽器中打開了URL,這是我不想要的)。所以然後我嘗試使用urllib(urlopen)和機械化。他們兩個都在我的程序中運行良好,但他們都沒有真正將我的請求發送到網站!如何在不使用瀏覽器的情況下使用Python打開URL?

這裏是我的代碼部分:

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() 

當我進入該網站,locationary.com,它不顯示任何修改過!當我使用「webbrowser」時,它在我提交我的URL後確實在網站上顯示了更改。如何在不實際打開瀏覽器的情況下執行webbrowser的相同操作?

我認爲網站想要一個「GET」

+0

是不是有'?'在'proxy.jspACTION_TOKEN ='''就像'proxy.jsp?ACTION_TOKEN =' – 2011-12-23 16:30:46

+0

你知道服務是否需要'POST'或'GET'請求嗎? – 2011-12-23 16:30:48

+0

與您的問題沒有特別的關係,但您可能要注意'urllib.urlopen()'已被棄用,並且已將其移除Python 3.0。使用['urllib2.urlopen()'](http://docs.python.org/library/urllib2.html#urllib2.urlopen) – Amadan 2011-12-23 16:35:39

回答

0

一個HTTP GET不需要在客戶端的任何特定的代碼或行動:這只是基本URL(HTTP://服務器/)+路徑+可選查詢。

如果URL是正確的,那麼上面的代碼應該工作。一些指針你可以嘗試下一步:

  1. 該網址是否真的正確?使用Firebug或類似的工具來觀察網絡流量,它可以爲您提供完整的URL和HTTP請求中的所有頭字段。

  2. 也許該網站需要您先登錄。如果是這樣,請確保您正確設置了Cookie。

  3. 有些網站需要一個正確的「引用者」字段(以防止自己被深度鏈接)。將瀏覽器使用的引用標頭添加到請求中。

  4. 服務器的日誌文件是解決這些問題的重要信息來源 - 當您有權訪問它時。

+0

對不起。我的代碼中有一個問號,但當我把它放在這裏時,它不知何故就消失了。我想我不小心撞到了退格。 – jacob501 2011-12-23 16:33:40

+2

這不是我的問題的答案。 – jacob501 2011-12-23 16:39:12

+0

這不回答我的問題。請刪除它。 – jacob501 2011-12-23 16:50:43

1

我不知道你的工作是什麼操作系統,但如果你使用類似httpscoop(Mac)或小提琴手(PC)或者Wireshark的,你應該能夠看交通,看發生了什麼。可能是網站做了重定向(您的瀏覽器正在追蹤)或者還有其他一些後續活動。

啓動HTTP嗅探器,使用Web瀏覽器發出請求並觀察流量。完成之後,使用python腳本嘗試一下,看看是否正在創建請求,以及HTTP流量有什麼區別。這應該有助於確定斷開連接的位置。

相關問題