2015-04-22 72 views
2

我有一個Python腳本,需要輸入一些網址。我的腳本遍歷每個這些URL並從每個頁面打印出htmltext。該網站會將此看作是3個獨立的GET請求,因此3個「點擊」到該網站,或者它會看到套接字連接並將其視爲1次「點擊」頁面?從一個連接的網站上的多個網址獲取html數據

我認爲這是通過檢查調試的第一個選項,如果是這樣,是否有可能從同一網站上的多個網址獲取數據,但該網站只能將該網站視爲1次「點擊」網站?我可以利用保持活動功能在urllib3中實現這一點嗎?

我的腳本如下:

for u in url: 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    req = urllib2.Request(u) 
    req.add_header('User-Agent','Mozilla/5.0') 
    print urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1)).open(req) 
    resp = opener.open(req) 
    htmltext = resp.read() 

回答

2

請問網站上看到這是3個獨立的GET請求,因此3「命中」的網站,否則會看到套接字連接,並把它看成1「點擊「到頁面?

是的,即使您重新使用套接字連接,它仍然是3個不同的請求(超過一個套接字)。無論您使用了多少個連接,服務器的訪問日誌都會顯示3個請求。

重用連接的好處是創建一個新的TCP套接字並與服務器協商握手是一個相對昂貴的過程。有時需要更多時間來完成這個任務,而不是檢索HTTP響應主體本身。通過重新使用連接,可以在第一次請求後跳過該部分。

+0

感謝可以從3個不同的URL獲取數據,但服務器不知道? –

+1

服務器必須知道它所服務的URL,否則它將如何服務它們? – kindall

+0

我希望能繞過它。因此,是否可以打開與網站的連接並持續獲得?一個示例網站,一旦你瀏覽到頁面的一些數據在頁面中自動更新而不刷新頁面是可以在python中模擬這個? –