2015-04-01 153 views
0

我試圖打開URL與機械化但不能打開並關閉它馬上 我希望它打開URL,然後等待7分鐘然後關閉該網址。使用機械化與Python

我想要做的事:

import mechanize 
import cookielib 
import time 


url='http://google.com/' 
op = mechanize.Browser() 

cj = cookielib.LWPCookieJar() 
op.set_handle_robots(False) 
op.set_handle_equiv(True) 
op.set_handle_referer(True) 
op.set_handle_redirect(True) 
op.set_cookiejar(cj) 
op.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=7) 

op.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

op.open(url) 
time.sleep(7) 

print op.geturl() 

,但沒有奏效。我該怎麼做?

thnx。

+1

睡眠需要的秒數睡,而不是幾分鐘。 – 2015-04-01 22:59:38

+0

@ap好吧,但它沒有與機械化工作 – deounix 2015-04-01 23:01:26

+1

那麼我不認爲我理解這個問題。使用'time.sleep(420)'睡7分鐘。如果不是那樣,什麼不行?它以什麼方式專門用於機械化? – 2015-04-01 23:03:47

回答

2

mechanize是一個用於執行http請求/響應的工具,只有像urllib那樣能夠像瀏覽器一樣運行多一點的能力。

HTTP是(大部分)無狀態 - 你不抱網頁在這個意義上開放你似乎在思考。連接在「打開」返回時關閉。

您檢索谷歌的主頁,獲取物體從機械化回來表示響應,等待7秒,然後要求附於響應的URL。

我並運行您的代碼,並在該範圍內它的工作原理。

set_handle_refreshHTTPRefreshProcessor當網頁有一個「刷新」元,導致它在一段時間後重新加載時,就會發揮作用。我相信你給出的參數(7秒,而不是分鐘)是機械化在刷新之間兌現的最大時間。

但在任何情況下,谷歌的網頁不刷新,我不認爲,所以這並不做任何事情在那裏。

您可以查看HTTP Keep-Alive/Persistent連接以查看是否有要執行的操作,但即使保持連接狀態也不是真正從客戶端POV打開的頁面。