只是一个实际的问题。我确实需要检索站点的 HTTP 状态代码以及 IP 地址。
鉴于我通常需要解析 10k 和 150k 域之间的事实,我想知道哪种方法最有效。
我已经看到使用 urllib2.urlopen(site) 尝试下载连接到文件的整个文件流。同时 urllibs2 不提供将主机名转换为 IP 的方法。
鉴于我只对 HEAD 位感兴趣以收集 HTTP 状态代码和特定服务器的 IP 地址等信息,那么最好的操作方式是什么?
我应该尝试只使用套接字吗?谢谢
只是一个实际的问题。我确实需要检索站点的 HTTP 状态代码以及 IP 地址。
鉴于我通常需要解析 10k 和 150k 域之间的事实,我想知道哪种方法最有效。
我已经看到使用 urllib2.urlopen(site) 尝试下载连接到文件的整个文件流。同时 urllibs2 不提供将主机名转换为 IP 的方法。
鉴于我只对 HEAD 位感兴趣以收集 HTTP 状态代码和特定服务器的 IP 地址等信息,那么最好的操作方式是什么?
我应该尝试只使用套接字吗?谢谢
我认为没有一种特殊的魔术工具可以检索站点的 HTTP 状态代码和 IP 地址。
要获取 HTTP 状态代码,您应该HEAD使用urllib2orhttplib或requests发出请求。这是一个示例,取自How do you send a HEAD HTTP request in Python 2? :
>>> import urllib2
>>> class HeadRequest(urllib2.Request):
... def get_method(self):
... return "HEAD"
...
>>> response = urllib2.urlopen(HeadRequest("http://google.com/index.html"))
一个例子,使用requests:
>>> import requests
>>> requests.head('http://google.com').status_code
301
此外,您可能想查看grequests以加快从多个页面获取状态代码的速度。
GRequests 允许您使用带有 Gevent 的请求来轻松地发出异步 HTTP 请求。
要获取 IP 地址,您应该使用socket:
socket.gethostbyname_ex('google.com')
另请参阅这些线程:
希望有帮助。