当前位置: 主页 > 日志 > Webscraping >

如何用Python进行whois查询?

我想到了两种方案:

1)从whois查询网站上抓取,例如http://whois.chinaz.com。

2)从whois命令行查询工具的结果中获取。Windows下的whois命令行工具 whois.exe: http://www.everbox.com/f/Mpe2uCBvbregnCPn33h8W2LLBv

这两种方案都能跨平台。

下面给出我的解决方案,优先采用1),如果查询失败再尝试2):

def whois(self, url, timeout=10):
        """Query whois info
        Compatible with windows
        Note:
        On unix please install whois first.
        On windows please download whois.exe from http://technet.microsoft.com/en-us/sysinternals/bb897435.aspx, then place it in Python directory e.g. C:\Python27
        """
        domain = common.get_domain(url)
        if domain:
            key = 'whos_%s' % domain
            try:
                text = self.cache[key]
                if text:
                    return text
            except KeyError:
                pass
            
            # try http://whois.chinaz.com/ first
            query_url = 'http://whois.chinaz.com/%s' % domain
            html = self.get(query_url)
            if html:
                m = re.compile("").search(html)
                if m:
                    script_url = urljoin(query_url, m.groups()[0])
                    text = self.get(script_url)
                    if not text or not '@' in text:
                        del self.cache[query_url]
                        del self.cache[script_url]
                        
                        # try whois command
                        r = subprocess.Popen(['whois', domain], stdout=subprocess.PIPE)
                        start = time.time()
                        while r.poll() == None:
                            time.sleep(0.5)
                            if time.time() - start > timeout:
                                try:
                                    r.kill()
                                except Exception, e:
                                    pass
                                break
                        if r.poll() !=1:
                            text = r.communicate()[0]
       
                    if text and '@' in text:
                        self.cache[key] = text
                        return text

[日志信息]

该日志于 2011-08-02 16:24 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “如何用Python进行whois查询?” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部