只是一个实际的问题。我确实需要检索站点的 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
使用urllib2
orhttplib
或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')
另请参阅这些线程:
希望有帮助。