【问题标题】:Efficiently retrieve IP address and status code高效检索 IP 地址和状态码
【发布时间】:2013-08-21 17:51:05
【问题描述】:

只是一个实际问题。我确实需要检索站点的 HTTP 状态代码以及 IP 地址。

考虑到我通常需要解析 10k 到 150k 个域,我想知道哪种方法最有效。

我已经看到使用 urllib2.urlopen(site) 尝试下载连接到文件的整个文件流。同时 urllibs2 不提供将主机名转换为 IP 的方法。

鉴于我只对 HEAD 位感兴趣以收集 HTTP 状态代码和特定服务器的 IP 地址等信息,那么最好的操作方式是什么?

我应该尝试只使用套接字吗?谢谢

【问题讨论】:

    标签: sockets python-2.7


    【解决方案1】:

    我认为没有一种特殊的魔法工具可以检索站点的 HTTP 状态代码和 IP 地址。

    要获取 HTTP 状态代码,您应该使用 urllib2httplibrequests 发出 HEAD 请求。这是一个例子,取自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 允许您将 Requests 与 Gevent 一起使用来实现异步 HTTP 请求很容易。

    要获取 IP 地址,您应该使用socket

     socket.gethostbyname_ex('google.com')
    

    另见这些主题:

    希望对您有所帮助。

    【讨论】:

    • 所以不打两次电话就没有机会做到这一点?
    猜你喜欢
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2010-12-05
    相关资源
    最近更新 更多