2011-01-27 5 views
9

मेरे पास एक डोमेन नाम का प्रतिनिधित्व करने वाली स्ट्रिंग है। मैं Python 3.x का उपयोग कर संबंधित आईपी पता कैसे प्राप्त कर सकता हूं? कुछ इस तरह:पायथन 3.x का उपयोग कर वेबसाइट का आईपी पता कैसे प्राप्त करूं?

>>> get_ip('http://www.stackoverflow.com') 
'64.34.119.12' 
+2

के संभावित डुप्लिकेट [कैसे पायथन में DNS को हल करने?] (Http://stackoverflow.com/questions/3837744/how-to-resolve-dns-in-python) –

उत्तर

7
>>> import socket 

>>> def get_ips_for_host(host): 
     try: 
      ips = socket.gethostbyname_ex(host) 
     except socket.gaierror: 
      ips=[] 
     return ips 

>>> ips = get_ips_for_host('www.google.com') 
>>> print(repr(ips)) 
('www.l.google.com', [], ['74.125.77.104', '74.125.77.147', '74.125.77.99']) 
10
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32 
>>> import socket 
>>> socket.gethostbyname('cool-rr.com') 
'174.120.139.162' 

ध्यान दें कि:

  • gethostbyname() IPv6 साथ काम नहीं करता।
  • gethostbyname() सी कॉल gethostbanme() का उपयोग करता है, जिसे बहिष्कृत किया गया है।

यदि ये समस्याग्रस्त हैं, तो इसके बजाय socket.getaddrinfo() का उपयोग करें।

6

सबसे आसान तरीका socket.gethostbyname() का उपयोग करना है। यह आईपीवी 6 का समर्थन नहीं करता है, हालांकि, और बहिष्कृत सी कॉल gethostbanme() पर आधारित है। यदि आप इन समस्याओं की परवाह करते हैं, तो आप इसके बजाय अधिक बहुमुखी socket.getaddrinfo() का उपयोग कर सकते हैं।

संबंधित मुद्दे