美文网首页有点意思PythonTornado
Python: 批量查询域名是否被注册

Python: 批量查询域名是否被注册

作者: 疯狂的向日葵 | 来源:发表于2017-06-18 18:50 被阅读594次

    step1. 找一个单词数据库

    这里有一个13万个单词的
    http://download.csdn.net/detail/u011004567/9675906
    新建个mysql数据库words,导入words里面就行

    step2.找个查询接口

    这里我用的是http://apistore.baidu.com/astore/serviceinfo/27586.html

    step3. 执行Python脚本

    # -*- coding: utf-8 -*-
    
    '''
    域名注册查询
    '''
    
    __author__ = 'Jimmy'
    
    from sqlalchemy import Column, String,Integer, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    import requests
    import json
    from html.parser import HTMLParser
    
    request_failure = []
    domain_available = []
    
    def writeToText(list,fn):
        file = open(fn, 'w')
        file.write(str(list))
        file.close()
    
    class bodyJSON(HTMLParser):
        tag = False
        def handle_starttag(self, tag, attr):
            if tag == 'body':
                self.tag = True
    
        def handle_endtag(self, tag):
            if tag == 'body':
                self.tag = False
    
        def handle_data(self, data):
            if self.tag:
                self.data = data
    
        def getJSON(self):
            return self.data
    
    
    Base = declarative_base()
    
    class Words(Base):
        # 表的名字:
        __tablename__ = 'words'
    
        # 表的结构:
        ID = Column(Integer(), primary_key=True)
        word = Column(String(100))
        exchange = Column(String(1000))
        voice = Column(String(1000))
        times = Column(Integer())
    
    # 初始化数据库连接:
    engine = create_engine('mysql+mysqlconnector://root:846880@localhost:3306/words')
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)
    
    # 创建Session:
    session = DBSession()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    words = session.query(Words).filter(Words.ID).all()
    
    def searchInaaw8(words):
        length = len(words)
        print('====开始搜索...=====共%d个单词' %length)
        for i in range(0,length):
            word = words[i]
            url = 'http://www.aaw8.com/Api/DomainApi.aspx?domain=%s.com' % word.word
            r = requests.get(url)
            if r.status_code == 200:
                if r.headers['Content-Type'] == 'text/html':
                    print('第%s个请求被拒绝,url = %s' % (i, url))
                else:
                    body = bodyJSON()
                    body.feed(r.text)
                    res = json.loads(body.getJSON())
                    if res['StateID'] == 210:
                        print('第%d次,%s.com 未被注册' % (i, word.word))
                        domain_available.append(word.word)
                    elif res['StateID'] == 0:
                        print('第%d次,%s.com 查询接口出错' % (i, word.word))
                        request_failure.append(word.word)
                    elif res['StateID'] == 211:
                        pass
                        print('第%d次,%s.com 已经被注册' % (i, word.word))
                    elif res['StateID'] == 213:
                        print('第%d次,%s.com 查询超时' % (i, word.word))
                        request_failure.append(word.word)
                    else:
                        print('其他错误')
                        request_failure.append(word.word)
                    body.close()
            else:
                print('请求失败')
                request_failure.append(word.word)
    
        print('查询结束...')
        print('查询失败:')
        print(request_failure)
        writeToText(request_failure,'failure.text')
        print('未注册域名:')
        print(domain_available)
        writeToText(request_failure,'available.text')
    
    
    searchInaaw8(words)
    

    step4:放到阿里云就可以搞事情啦

    image.png

    相关文章

      网友评论

      本文标题:Python: 批量查询域名是否被注册

      本文链接:https://www.haomeiwen.com/subject/ujcwqxtx.html