Python網路編程小例子:使用python擷取網站網域名稱資訊

來源:互聯網
上載者:User

標籤:網路編程   python   網頁解析   網域名稱服務 (DNS)   

Whois簡介

whois(讀作“Who is”,非縮寫)是用來查詢網域名稱的IP以及所有者等資訊的傳輸協議。簡單說,whois就是一個用來查詢網域名稱是否已經被註冊,以及註冊網域名稱的詳細資料的資料庫(如網域名稱所有人、網域名稱註冊商)。通過whois來實現對網域名稱資訊的查詢。早期的whois查詢多以命令列介面存在,但是現在出現了一些網頁介面簡化的線上查詢工具,可以一次向不同的資料庫查詢。網頁介面的查詢工具仍然依賴whois協議向伺服器發送查詢請求,命令列介面的工具仍然被系統管理員廣泛使用。whois通常使用TCP協議43連接埠。每個網域名稱/IP的whois資訊由對應的管理機構儲存。

 

不同網域名稱尾碼的whois資訊需要到不同的whois資料庫查詢。如.com的whois資料庫和.edu的就不同。目前國內提供WHOIS查詢服務的網站有萬網、站長之家的等。每個網域名稱或IP的WHOIS資訊由對應的管理機構儲存,例如,以.com結尾的網域名稱的WHOIS資訊由.com網域名稱電訊廠商VeriSign管理,中國國家頂級網域名稱.cn網域名稱由CNNIC管理[1] 。

 

WHOIS服務是一個線上的“請求/響應”式服務。WHOIS Server運行在後台監聽43連接埠,當Internet使用者搜尋一個網域名稱(或主機、連絡人等其他資訊)時,WHOIS Server首先建立一個與Client的TCP串連,然後接收使用者請求的資訊並據此查詢後台網域名稱資料庫。如果資料庫中存在相應的記錄,它會將相關資訊如所有者、管理資訊以及技術聯絡資訊等,反饋給Client。待Server輸出結束,Client關閉串連,至此,一個查詢過程結束。

 

有些註冊商,對國際網域名稱的whois資訊是屏蔽的,如果要查詢只能聯絡對應的註冊商。這種保護機制是防止有人惡意利用這種whois資訊的連絡方式,暴露客戶的隱私資訊。

 

使用python擷取網站網域名稱資訊

 

下面的例子將使用站長之家的whois,結合網頁爬蟲的使用,來擷取whois資訊。



#!/usr/bin/python# -*- coding: utf-8 -*-'''this code is to get whois info by http://whois.chinaz.com/Created on 2015-05-13version: 0.1@author: zhang'''import osfrom urllib2 import Request, urlopen, URLError, HTTPErrorfrom bs4 import BeautifulSoupimport chardetimport socketsocket.setdefaulttimeout(30) class get_whois:    def __init__(self,url):        self.url = url    def getDomainInfo(self):        domain='http://whois.chinaz.com/'+self.url        req = Request(domain)        try:            response = urlopen(req)        except URLError , e :            if isinstance(e.reason, socket.timeout):                print 'socket timeout'                          print "network meets some problems: "            print "Reason: ",e.reason                    else:            if response != None:                the_page = response.read()                char = chardet.detect(the_page)                #解碼為unicode                the_page.decode(char['encoding'],'ignore')                soup = BeautifulSoup(the_page)                                #<div class="div_whois">                #因為http://whois.chinaz.com/返回的資訊                #包含在 <div class="div_whois">標籤中,直接擷取                                domain = soup.find('div',id="whoisinfo")                domain = unicode(domain)                return domainif __name__ == "__main__":           domain = ['baidu.com']    test = get_whois(domain[0])    info = test.getDomainInfo()    print info   


執行後,info的內容為:


<div class="div_whois" id="whoisinfo">註冊商:MARKMONITOR INC.<br/>網域名稱伺服器:whois.markmonitor.com<br/>DNS伺服器:DNS.BAIDU.COM<br/>DNS伺服器:NS2.BAIDU.COM<br/>DNS伺服器:NS3.BAIDU.COM<br/>DNS伺服器:NS4.BAIDU.COM<br/>DNS伺服器:NS7.BAIDU.COM<br/>網域名稱狀態:電訊廠商設定了客戶禁止刪除保護 http://www.icann.org/epp#電訊廠商設定了客戶禁止刪除保護<br/>網域名稱狀態:電訊廠商設定了客戶禁止轉移保護 http://www.icann.org/epp#電訊廠商設定了客戶禁止轉移保護<br/>網域名稱狀態:電訊廠商設定了客戶禁止修改保護 http://www.icann.org/epp#電訊廠商設定了客戶禁止修改保護<br/>網域名稱狀態:網域名稱伺服器上禁止刪除保護 http://www.icann.org/epp#網域名稱伺服器上禁止刪除保護<br/>網域名稱狀態:網域名稱伺服器上禁止轉移保護 http://www.icann.org/epp#網域名稱伺服器上禁止轉移保護<br/>網域名稱狀態:網域名稱伺服器上禁止修改保護 http://www.icann.org/epp#網域名稱伺服器上禁止修改保護<br/>更新時間:2013年10月14日<br/>建立時間:1999年10月11日<br/>到期時間:2015年10月11日<br/>連絡人:: zhiyong duan<br/><br/></div>


因為免費的原因,擷取的資訊並不全面,且有許多資訊被服務商封閉


擷取相應資訊後,可以對其進一步的進行解析,例如,結合python中的re模組,對時間資訊進行提取等。

 

在以上例子中使用了python的兩個工具包,分別是Beautifulsoup 是用Python寫的一個HTML/XML的解析器,它可以很好的處理不規範標記並產生剖析樹(parse tree)。 它提供簡單又常用的導航(navigating),搜尋以及修改剖析樹的操作。它可以大大節省你的編程時間。

 

另外一個是chardet,用來實現字串/檔案編碼檢測。

 

在執行代碼時,要確保程式可以找到這兩個工具包。具體的見參考檔案中的源包相關URL

 

參考文獻:

http://baike.baidu.com/link?url=2eMXzLsFeJFyKxD6117bmL1L6Ka-bFP-SAxK0zF30VagwYD8StCLPnoEf9rDdjj_8metwL1QpcF2XImNDoUvLK

 

http://whois.chinaz.com/

 

http://www.crummy.com/software/BeautifulSoup/bs4/doc/

 

https://pypi.python.org/pypi/chardet

 

 

 

 

 

Python網路編程小例子:使用python擷取網站網域名稱資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.