2016-02-07 26 views
0

我只是想弄清楚如何保持打開網站的連接。我在獲取URL後嘗試使用while循環,但是我可以看到它不再連接到網站。我如何導航到一個URL,並在運行一個循環時保持該URL整個打開?我只是希望它永遠循環,也許從網站打印一些數據。這是我試過的代碼,謝謝你的幫助!使用Python請求保持網站打開?

import requests 
import time 

url = 'https://www.google.com' 

s = requests.session() 

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} 

r = s.get(url, headers=headers) 

while True: 
    print str(r) 
    time.sleep(10) 
+0

你是什麼意思,'保持開放'?建立一個TCP連接? – timgeb

+0

就像你通常會去一個網站。例如,如果你去了stackoverflow.com並且保持打開狀態。這正是我想要實現的。我想要訪問一個網站並保持打開狀態,就像使用普通瀏覽器一樣。希望更有意義。 – antfuentes87

+1

不,這沒有意義。當您在瀏覽器中「保持打開網站」時,您認爲會發生什麼? – timgeb

回答

1

問題的目的是什麼?你想通過打開一個連接來達到什麼目的?

我懷疑你可以永遠打開它,但你在做什麼應該在某種程度上工作。

使用requests會話應確保HTTP保持連接選項設置正確,遠程服務器應在維護每個HTTP請求後保持打開TCP連接。如果您停止發送請求,則服務器將最終超時並關閉連接。

重要的一點是,你必須不斷的要求,例如:

import requests 
import time 

url = 'https://www.google.com' 

s = requests.session() 
while True: 
    r = s.get(url) 
    print(r.text) 
    time.sleep(10) 

此代碼應保持連接,並允許多個請求在同一TCP連接上發送。

+0

在你給我的例子中,它會一直持續到那個URL,一遍又一遍?每次它到達URL時,就像刷新頁面一樣正確?我需要能夠保持打開狀態,而不必一遍又一遍地瀏覽URL。現在,也許一小時之後,我可以重置連接並轉到URL?但至少需要一個小時才能打開網站。 – antfuentes87

+0

@ antfuentes87:是的,它會一遍又一遍地去那裏。如果不進行後續請求,您將無法繼續打開連接。遠程服務器不會永遠保持其連接,爲什麼它應該浪費資源來做到這一點?你最好提供一個理由,爲什麼你認爲你需要這樣做 - 也許可以提出一種替代解決方案。 – mhawke

+0

你有Skype嗎?加我antfuentes87,這將是100倍容易解釋整個情況。謝謝! – antfuentes87

0

所以這一般會發生什麼,當你發送一個HTTP請求,你創建一個連接到服務器的套接字,併發送請求,這就是全部(好吧,現實中,但你得到它:)) 。 然後服務器會回覆給你一個狀態碼(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes),所以也許你想監視一個服務器,看看它是否打開,多久等等。那麼你可以這樣做:

import requests 
import time 

your_header = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} 

while 1: 
    r = requests.request("GET","http://www.google.com",headers=your_header) 
    if r.status_code == 200: 
     print("It's on!") 
    else: 
     break 
    time.sleep(2) 

很簡單,你只需要每2秒發一個請求。然後你檢查狀態碼是否正確。我希望這將有所幫助。

+0

我該如何設置我的頭文件? – antfuentes87

+0

@ antfuentes87你需要他們嗎? – Francesco

+0

@ antfuentes87看看編輯 – Francesco