2011-01-09 58 views
2

在我的程序的更大規模下面的代碼的目的是過濾掉所有動態HTML的網頁源代碼Python 3,urllib ...重置連接可能嗎?

代碼片段:

try: 
    deepreq3 = urllib.request.Request(deepurl3) 
    deepreq3.add_header("User-Agent","etc......") 
    deepdata3 = urllib.request.urlopen(deepurl3).read().decode("utf8", 'ignore') 

下面的代碼循環3次以識別目標網頁是否爲動態(源代碼每隔一段時間更改一次)。

如果頁面是動態的,則上面的代碼會循環15次,並嘗試過濾掉動態內容。

問題:

雖然這種過濾方法的工作80%的時間,一些網頁將重新加載所有15次,還含有動態代碼。然而。如果我手動關閉Python Shell並重新執行我的程序,我的'刷新頁面方法'無法擺脫的動態html不再存在......它已被替換爲新的動態html,我的'刷新頁面方法'不能擺脫。所以我需要知道,這裏發生了什麼?如何重新運行我的程序,導致頁面的動態內容發生變化。並且,有沒有辦法,我可以使用任何'重置連接'命令來重新創建...無需手動重新啓動我的應用程序。

感謝您的回覆。

UPDATE:

我做了我在從主腳本運行一個循環阿米努可執行HTML採集卡。它解決了這個問題,但我仍然很好奇爲什麼我需要這樣做。

+0

看起來像一個緩存問題的懷疑。考慮添加`.add_header('cache-control':'no-cache')`。 – 9000 2011-01-09 11:23:55

+0

感謝9000.我希望你的方法能夠工作,但事實並非如此。 .add_header('cache-control':'no-cache') - 導致錯誤 .add_header('cache-control:','no-cache') - 沒有錯誤,但沒有解決我的問題。 感謝您對它的破解。任何其他接受者? – Rhys 2011-01-10 06:23:18

回答

0

嘗試讀取數據後,關閉連接:

try: 
    deepreq3 = urllib.request.Request(deepurl3) 
    deepreq3.add_header("User-Agent","etc......") 
    connection = urllib.request.urlopen(deepurl3) 
    deepdata3 = connection.read().decode("utf8", "ignore") 
    connection.close() 
0

我做了我在從主腳本運行一個循環阿米努可執行HTML採集卡。並用它來解決這個問題,但我仍然很好奇爲什麼我需要這樣做。