2015-04-21 15 views
9

मैं एक ऐसी स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो पंजीकृत डोमेन नहीं लौटाएगा। मैं पाइथन 2.7 में काम कर रहा हूं। मैंने पढ़ा है कि मॉड्यूल whois ऐसा करने में सक्षम होना चाहिए लेकिन मैंने जो कोड लिखा है वह त्रुटि उठाता है।जांचें कि डोमेन पंजीकृत है या नहीं

domain = whois.Domain(dom) 
    File "C:\Python27\lib\site-packages\whois\_3_adjust.py", line 12, in __init__ 
    self.name    = data['domain_name'][0].strip().lower() 
TypeError: string indices must be integers, not str 

क्या आपको पता है कि क्या गलत हो सकता है है:

import whois 
domains = ['http://www.example.com'] 

for dom in domains: 
    domain = whois.Domain(dom) 
    print domain.registrar 

यह त्रुटि है? या आप मुझे एक बेहतर समाधान दे सकते हैं?

संपादित करें: मैंने pythonwhois मॉड्यूल की कोशिश की लेकिन यह भी त्रुटि देता है।

EDIT2: यहां एक समाधान के अनुसार, मैंने pywhois का उपयोग करने का प्रयास किया है, यह कोड भी त्रुटि को बढ़ाता है।

import pywhois 
w = pywhois.whois('google.com') 
w.expiration_date 

त्रुटि: 1 मैं:

w = pywhois.whois('google.com') 
AttributeError: 'module' object has no attribute 'whois' 
+0

क्या व्हाइस मॉड्यूल आपके लिए काम करता था? – Ajay

+0

@ अजय नहीं, ऐसा नहीं हुआ। यह त्रुटि उत्पन्न करता है, सबप्रोसेस के साथ कुछ तो यह एक और समस्या हो सकती है। –

+0

क्या आपने पीआईपी को स्थापित करने या किसी अन्य विधि का उपयोग किया था? मैं उबंटू पर हूं और स्थापित करने के लिए प्रयुक्त पाइप हूं। और वह कोड मेरे लिए काम करता है। – Ajay

उत्तर

7

का एक स्क्रीनशॉट पोस्ट कर रहा हूँ pythonwhois साथ यदि आप के पक्ष में, यह हो सकता है

>>> import pythonwhois # i'm using this http://cryto.net/pythonwhois 
>>> domains = ['google.com', 'stackoverflow.com'] 
>>> for dom in domains: 
...  details = pythonwhois.get_whois(dom) 
...  print details['contacts']['registrant'] 

जो एक शब्दकोश रिटर्न

{'city': u'Mountain View', 
'fax': u'+1.6506188571', 
'name': u'Dns Admin', 
'state': u'CA', 
'phone': u'+1.6502530000', 
'street': u'Please contact contact- [email protected], 1600 Amphitheatre Parkway', 
'country': u'US', 
'postalcode': u'94043', 
'organization': u'Google Inc.', 
'email': u'[email protected]'} 

{'city': u'New York', 
'name': u'Sysadmin Team', 
'state': u'NY', 
'phone': u'+1.2122328280', 
'street': u'1 Exchange Plaza , Floor 26', 
'country': u'US', 
'postalcode': u'10006', 
'organization': u'Stack Exchange, Inc.', 
'email': u'[email protected]'} 

संपादित करें: मैं अपने whois जाँच यह कोड मेरे लिए काम किया।

>>> import whois 
>>> domains = ['google.com', 'stackoverflow.com'] 
>>> for dom in domains: 
...  domain = whois.query(dom) 
...  print domain.name, domain.registrar 
... 
google.com MARKMONITOR INC. 
stackoverflow.com NAME.COM, INC. 

इस एपीआई यूनिक्स/लिनक्स की whois शेल कमांड का उपयोग करता है और के रूप में यह here दिखाए आप डोमेन नाम से पहले http:// नहीं जोड़ना चाहिए। या आप एक यूनिक्स/लिनक्स मशीन परीक्षण इस अगर:

$ whois google.com 

Whois Server Version 2.0 

Domain names in the .com and .net domains can now be registered 
with many different competing registrars. Go to http://www.internic.net 
for detailed information ... 

लेकिन http के साथ (यह शायद http (s की वजह से है) एक सिर्फ एक प्रोटोकॉल प्रकार है, और डोमेन नाम के साथ ही किसी भी realiton नहीं है)

$ whois http://google.com 
No whois server is known for this kind of object. 
0

मैं documentation की जाँच की और me.Domain नाम के लिए काम किया है mysite.com (नहीं http://www.example.com)

>>> import whois 
>>> domains = ['google.com'] 
>>> 
>>> for dom in domains: 
...  domain = whois.query(dom) 
...  print domain.registrar 
... 



MARKMONITOR INC. 

संपादित की तरह होना चाहिए पता नहीं क्यों यह दूसरों के लिए काम नहीं कर रहा है और त्रुटियां प्राप्त कर रहा है। मैं अपने टर्मिनल Screenshot

+0

'विशेषताएँ त्रुटि: 'कोई नहीं टाइप' ऑब्जेक्ट में आपके सटीक उदाहरण – heinst

+0

@heinst के लिए कोई विशेषता 'रजिस्ट्रार' नहीं है, यह पीयूपी 008 के अनुसार उबंटू – Ajay

1

whois परियोजना github ले जाया गया है, तो आप इसे pip install python-whois का उपयोग कर स्थापित कर सकते हैं:

domains = ['http://www.example.com'] 
from whois import whois 

print(whois(domains[0])) 

{'updated_date': datetime.datetime(2014, 8, 14, 0, 0), 'status': ['clientDeleteProhibited http://www.icann.org/epp#clientDeleteProhibited', 'clientTransferProhibited http://www.icann.org/epp#clientTransferProhibited', 'clientUpdateProhibited http://www.icann.org/epp#clientUpdateProhibited'], 'name': None, 'dnssec': None, 'city': None, 'expiration_date': datetime.datetime(2015, 8, 13, 0, 0), 'zipcode': None, 'domain_name': 'EXAMPLE.COM', 'country': None, 'whois_server': ['whois.enetica.com.au', 'whois.godaddy.com', 'whois.domain.com', 'whois.iana.org'], 'state': None, 'registrar': ['ENETICA PTY LTD', 'GODADDY.COM, LLC', 'DOMAIN.COM, LLC', 'RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY'], 'referral_url': ['http://www.enetica.com.au', 'http://registrar.godaddy.com', 'http://www.domain.com', 'http://res-dom.iana.org'], 'address': None, 'name_servers': ['A.IANA-SERVERS.NET', 'B.IANA-SERVERS.NET'], 'org': None, 'creation_date': datetime.datetime(1995, 8, 14, 0, 0), 'emails': None} 
3

मैं अजगर 3 में अजगर-whois के साथ मुद्दों लिया है, लेकिन अजगर निम्नलिखित कोड का उपयोग कर 2 मेरे लिए ठीक काम करता है।

सबसे पहले, मैं आपके द्वारा इंस्टॉल किए गए किसी भी जोइस मॉड्यूल को अनइंस्टॉल करने की अनुशंसा करता हूं। पाइथन-जोइस (0.6.1) और जोइस (0.7) दोनों एक ही import whois का उपयोग करते हैं, जिसने मेरे लिए कुछ अतिरिक्त भ्रम पैदा किया।

अगला, कमांड प्रॉम्प्ट, टर्मिनल इत्यादि के माध्यम से पाइथन-जोइस स्थापित करें।

pip install python-whois

एक बार स्थापित, अपना पसंदीदा अजगर आईडीई में निम्न कोड दर्ज करें।

""" 
Python = 2.79 
OS = Windows 10 
IDE = PyCharm 4.5 
PyPIPackage = python-whois 0.6.1 
""" 

import whois 
url = 'example.com' 
w = whois.whois(url) 
print w 

परिणाम एक शब्दकोश है।

{ 
    "updated_date": "2015-08-14 00:00:00", 
    "status": [ 
    "clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited", 
    "clientTransferProhibited https://icann.org/epp#clientTransferProhibited", 
    "clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited" 
    ], 
    "name": null, 
    "dnssec": null, 
    "city": null, 
    "expiration_date": "2016-08-13 00:00:00", 
... 
... 
... 
    "address": null, 
    "name_servers": [ 
    "A.IANA-SERVERS.NET", 
    "B.IANA-SERVERS.NET" 
    ], 
    "org": null, 
    "creation_date": "1995-08-14 00:00:00", 
    "emails": null 
} 
+0

पर ठीक काम करता है - संभवतः डंडर्सकोर किए गए चर नामों का उपयोग करना एक अच्छा विचार नहीं है। क्या कोई कारण है कि आपने उन्हें यहां उपयोग किया है कि मैं परिचित नहीं हूं? (मैं शायद ही किसी भी आईडीई का उपयोग करता हूं)। – bjd2385

+0

@ bjd2385 मैंने अंडरस्कोर हटा दिए और इसे ब्लॉक टिप्पणियों के साथ बदल दिया ताकि कोई भ्रम न हो क्योंकि उन 4 लाइनों को चर के रूप में नहीं माना जाता है। प्रतिक्रिया के लिए धन्यवाद। – myidealab

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