2013-11-27 109 views
0

我想緩存主機的IP以更快地刷新經常訪問的網頁的內容。但是我遇到了一些網頁可能被URL訪問的問題(比如'www.auto-club74.ru'),但是沒有相應的IP(socket.gethostbyname('www。')返回的'192.169.52.119'。 auto-club74.ru'))。如何通過IP訪問網頁?

這裏是一個失敗,我的示例代碼:

import socket 
import requests 

sIP = socket.gethostbyname('www.auto-club74.ru') 
print sIP 
r1 = requests.get('http://www.auto-club74.ru') 
r2 = requests.get('http://{}/'.format(sIP)) 
assert r1.text==r2.text 

它給Asse田。在此先感謝您的幫助!

回答

2

你真的試圖打開基於IP的網址嗎?它呈現不同的頁面。最有可能的是,它只是一些共享主機與不同的網站位於那裏與不同的域名。

您可以嘗試在標題中傳遞HOST

不,這顯然是行不通:

header = {"Host": 'www.auto-club74.ru' } 
r2 = requests.get('http://{}/'.format(sIP), headers=header) 

進入重定向循環我。其實www.auto-club74.ru重定向到auto-club74.ru,所以這個代碼工作

header = {"Host": 'auto-club74.ru' } 
r2 = requests.get('http://{}/'.format(sIP), headers=header) 

也比較網頁與字符串相等不使一個很大的意義,因爲它是非常有可能的兩個呈現的頁面不一樣,因爲那裏有很多動態元素。

此外,這聽起來像過早優化,DNS查找所需的一小部分,以獲得頁面,所以這不會幫助你很多。

+0

@Apogentus是的,你是對的,從錯誤的路線複製 – Andrey

+0

謝謝。你的解決方案給出錯誤「get()只需要1個參數」。 Hovewer,這個修正工作: r2 = requests.get('http:// {} /'.format(sIP),headers = header)。 – Apogentus