2013-11-27 71 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