コード例 #1
0
ファイル: sql_manager.py プロジェクト: 957204459/IPProxyTool
    def __init__(self):
        db_type = config.DB_config.get('db_type', 'mysql')
        db_config = config.DB_config.get(db_type)

        if db_type == 'mysql':
            from mysql import MySql
            self.sql = MySql(**db_config)
        elif db_type == 'redis':
            pass
        elif db_type == 'sqlite':
            pass
        else:  # default mysql
            from mysql import MySql
            self.sql = MySql(**config.DB_config.get('db_type'))
コード例 #2
0
def main():
    data_warehosue = soufangwang_data_extract_in_multiprocess()
    d = MySql(host='121.42.188.55',
              port=3306,
              username='******',
              password='******',
              charset="utf8")
    d.connect_to_database_server()
    d.change_database('SouFangWang')
    # sql = "INSERT INTO SouFangWang_New_House(loupan_name, loupan_name_detail, address, price) VALUES(%s, %s, %s, %s);"
    # sql = "INSERT INTO SouFangWang_Second_House(loupan_name, loupan_name_detail, area, allocation, address, per_price, " \
    #       "price) VALUES(%s, %s, %s, %s, %s, %s, %s);"
    sql = "INSERT INTO SouFangWang_Renting_House(loupan_name, loupan_name_detail, allocation, renting_type, floor, " \
          "address, price) VALUES(%s, %s, %s, %s, %s, %s, %s);"
    d.commit_to_database(sql, data_warehosue)
    d.disconnect_from_database_server()
コード例 #3
0
 def __init__(self, book_num):
     self.douban_url = "https://api.douban.com/v2/book/"
     self.start_num = book_num[0]
     self.end_num = book_num[1]
     self.header = {'User-Agent': 'Mozilla/5.0'}
     self.sql = MySql("Your MySQL setting")
     self.data = []
コード例 #4
0
def main():
    data_warehosue = anjuke_data_extract_in_multiprocess()
    d = MySql(host='121.42.188.55', port=3306,
              username='******', password='******',
              charset="utf8")
    d.connect_to_database_server()
    d.change_database('AnJuKe')
    # sql = "INSERT INTO AnJuKe_New_House(loupan_name, loupan_name_detail, address, price) VALUES(%s, %s, %s, %s);"
    # sql = "INSERT INTO AnJuKe_Second_House(loupan_name, loupan_name_detail, area, allocation, address, per_price, " \
    #       "price) VALUES(%s, %s, %s, %s, %s, %s, %s);"
    sql = "INSERT INTO AnJuKe_Renting_House(loupan_name, loupan_name_detail, allocation, renting_type, finish_type, " \
          "floor, address, price) VALUES(%s, %s, %s, %s, %s, %s, %s, %s);"
    d.commit_to_database(sql, data_warehosue)
    d.disconnect_from_database_server()
コード例 #5
0
	def __init__(self,	start_num,	count_num):
		# Init function:
		# Add request Header
		# Set start&count number
		# Connect MySQL
		self.movie_url = "http://api.douban.com/v2/movie/top250?"
		self.header = {'User-Agent': 'Mozilla/5.0'}
		self.start = "start=" + str(start_num)
		self.count = "count=" + str(count_num)
		self.sql = MySql("Your MySQL setting")
		self.data = []
コード例 #6
0
ファイル: dbfactory.py プロジェクト: linxuanmax/msql_to_es
 def factory(self, dbtype):
     dbtype = dbtype.lower()
     if dbtype == 'oracle':
         return Oracle(self._params)
     elif dbtype == 'mssql':
         return MsSql(self._params)
     elif dbtype == 'mysql':
         return MySql(self._params)
     #elif dbtype == 'db2':
     #    return DB2(self._params)
     #elif dbtype == 'sybase':
     #    return SaiBase(self._params)
     elif dbtype == 'postgresql':
         return Postgres(self._params)
     else:
         return None
コード例 #7
0
def main():
    d = MySql(host='121.42.188.55', port=3306,
              username='******', password='******',
              charset="utf8")
    d.connect_to_database_server()
    d.change_database('AnJuKe')
    sql = "SELECT * FROM AnJuKe_New_House WHERE loupan_name_detail LIKE 'http://sz.fang.anjuke.com/loupan/%.html' AND " \
          "price != '售价待定' AND price LIKE '均价%';"
    results = d.query_from_database(sql)
    d.disconnect_from_database_server()

    excel = xlwt.Workbook()
    sheet = excel.add_sheet('DataSheet', cell_overwrite_ok=True)
    for (j, result) in enumerate(results):
        sheet.write(j, 0, result[1])
        sheet.write(j, 1, result[3])
        price = re.findall(r'[0-9]+', result[4])
        sheet.write(j, 2, int(price[0]))
    excel.save("anjuke_new_house_data/ShenZhen_New_House.xls")
コード例 #8
0
ファイル: sql_manager.py プロジェクト: 957204459/IPProxyTool
class SqlManager(object):
    def __init__(self):
        db_type = config.DB_config.get('db_type', 'mysql')
        db_config = config.DB_config.get(db_type)

        if db_type == 'mysql':
            from mysql import MySql
            self.sql = MySql(**db_config)
        elif db_type == 'redis':
            pass
        elif db_type == 'sqlite':
            pass
        else:  # default mysql
            from mysql import MySql
            self.sql = MySql(**config.DB_config.get('db_type'))

    def init_database(self, database_name):
        pass

    def init_proxy_table(self, table_name):
        return self.sql.init_proxy_table(table_name)

    def insert_proxy(self, table_name, proxy):
        return self.sql.insert_proxy(table_name, proxy)

    def select_proxy(self, table_name, **kwargs):
        return self.sql.select_proxy(table_name, **kwargs)

    def update_proxy(self, table_name, proxy):
        return self.sql.update_proxy(table_name, proxy)

    def delete_proxy(self, table_name, proxy):
        return self.sql.delete_proxy(table_name, proxy)

    def delete_old(self, table_name, day):
        return self.sql.delete_old(table_name, day)

    def get_proxy_count(self, table_name):
        return self.sql.get_proxy_count(table_name=table_name)

    def get_proxy_ids(self, table_name):
        return self.sql.get_proxy_ids(table_name=table_name)

    def get_proxy_with_id(self, table_name, id):
        return self.sql.get_proxy_with_id(table_name=table_name, id=id)

    def del_proxy_with_id(self, table_name, id):
        return self.sql.del_proxy_with_id(table_name=table_name, id=id)

    def del_proxy_with_ip(self, table_name, ip):
        return self.sql.del_proxy_with_ip(table_name=table_name, ip=ip)

    def commit(self):
        return self.sql.commit()
コード例 #9
0
ファイル: constelattion.py プロジェクト: tanyjan/km
def init_paremeter():
    global mysql_db_mta, http, logging
    http = HttpClient("logger")
    mysql_db_mta = MySql('master_mysql', 'logger')
    logging = config.init_logger("constellation_crawler", False)
コード例 #10
0
ファイル: hbimserver.py プロジェクト: nmg1986/imserver
 def connectionMade(self):
     logger.info("New connection from {!s}".format(self.getId()))
     self.mysql=MySql()
コード例 #11
0
ファイル: hbimserver.py プロジェクト: nmg1986/imserver
class Chat(Int32StringReceiver):
    def __init__(self):

        self.login=False
        self.guid = None
        self.groups=None
        self.mysql=None
        self.msgHandle={
                'REGISTER'              	:   self.register,
                'UNREGISTER'            	:   self.unregister,
                'GET_CUSTOM_GROUPS'     	:   self.getGroups,
                'CREATE_CUSTOM_GROUP'   	:   self.addGroup,
                'DELETE_CUSTOM_GROUP'   	:   self.delGroup,
                'CHAT'                  	:   self.chat,
                'ADDUSER_CUSTOM_GROUP'  	:   self.addUser,
                'CUSTOM_USER_LOGIN'     	:   self.customLogin,
                'UPDATE_CUSTOM_GROUP'   	:   self.updateGroupName,
                'DELETEUSER_CUSTOM_GROUP' 	:   self.delUser,
                'FILE_TRANSFER_REQUEST' 	:   self.sendFile,
		'FILE_TRANSFER_CANCELLED'	:   self.sendFileCancel,
		'FILE_TRANSFER_ACCEPT'		:   self.sendFileAccept,
		'FILE_TRANSFER_REFUSED'		:   self.sendFileRefused,  
                'SHAKE_WINDOW'                  :   self.shakeWindow,
                'GET_USER_STATUS'       	:   self.getUserStatus,
		'CHANGE_PHOTO'			:   self.updatePhoto,
                'PERSONALSIGN'                  :   self.updateSignature,
                'QUERY_USER_BASIC'              :   self.getUserBasicInfo,
                'CHANGE_FONTSEETINGS'           :   self.changeFontSetting,
                }
    def connectionMade(self):
        logger.info("New connection from {!s}".format(self.getId()))
        self.mysql=MySql()
    def stringReceived(self,msg):
        logger.debug("Received msg : {!s}".format(msg))
        msgType=self.msg.getValue(msg,'Type')
        msgHandler=self.msgHandle.get(msgType,self.errHandle)
        msgHandler(msg)
    def register(self,msg):
        self.guid=self.msg.getValue(msg,'OwnGuid')
        ''' register user '''
        logger.debug("Register user {!s}...".format(self.guid))
        self.factory.addClient(self.guid,self)
        logger.debug("Done")
        if isinstance(self.mysql,MySql):
            ''' send online msg '''
            self.factory.sendNotify(self.guid,self.mysql,'ONLINE_NOTIFY')
            ''' check offline msg '''
            try:
                msgs=self.mysql.getOffLineMsg(self.guid)
            except _mysql_exceptions.ProgrammingError as error:
                logger.error(error)
		logger.error("{}".format(traceback.format_exc()))
                return
            if not msgs:
                logger.debug("User {!s} has no offline msgs".format(self.guid))
            else:
                logger.debug(msgs)
                for _msg in msgs:
                    arg=('OFFLINE_MSG',_msg[1],_msg[2],_msg[3],_msg[4])
                    message=self.msg.packMsg(*arg)
                    logger.debug("Sending offline msgs : {!s}".format(message))
                    self.transport.write(message)
                    logger.debug("Insert offline msgs to online msg...")
                    arg=(_msg[0],_msg[1],_msg[2],_msg[3],_msg[4],self.mysql)
                    try:
	                setOnLineMsg(*arg)
                    except _mysql_exceptions.ProgrammingError:
                        logger.error("Insert error")
                    except UnicodeDecodeError as error:
                        logger.error(error)
                    self.mysql.delOffLineMsg(_msg[5])
            ''' register in database '''
            self.mysql.setOnLineUser(self.guid)
            ''' send online msg '''
        else:
            ''' database init failed '''
            pass
    def unregister(self,msg):
	OwnGuid=self.msg.getValue(msg,'OwnGuid')
        logger.debug("Unregister user {!s}...".format(self.guid))
        self.factory.delClient(self.guid)
        logger.debug("Done")
        self.factory.sendNotify(self.guid,self.mysql,'OFFLINE_NOTIFY')
        self.mysql.delOnLineUser(self.guid)
    def getGroups(self,msg):
        def sendGroup():
            self.groups=self.mysql.getGroups(self.guid)
            if self.groups :
                for group in self.groups :
                    arg=('CUSTOM_GROUPS',group['gid'],group['gname'],group['users'],group['created'],group['weight'])
                    groupMsg=self.msg.packMsg(*arg)
                    logger.debug("Sending group msg : {!s}".format(groupMsg))
                    self.transport.write(groupMsg)
            else:
                logger.debug("{!s} has no custom groups,created them!".format(self.guid))
                try:
                    self.mysql.setDefaultGroups(self.guid)
                except Exception :#as error:
                    logger.error("Set default groups failed!!!")
		    #logger.error("{}".format(error))
		    #logger.error("{}".format(error.__doc__))
		    logger.error("{}".format(traceback.format_exc()))
                sendGroup()
            return
        logger.debug("Sending group msgs begin...")
        sendGroup()
        logger.debug("Sending group msgs end")
        return
    def getUserStatus(self,msg):
        Type=self.msg.getValue(msg,'Type') 
        #UserGuid=self.msg.getValue(msg,'UserGuid')
        GroupID=self.msg.getValue(msg,'GroupID')
        Users=self.mysql.getOnlineUser(GroupID)
        arg=(Type,GroupID,Users)
        msg=self.msg.packMsg(*arg)
        logger.debug("Sending user status msg...")
        logger.debug(msg)
        self.transport.write(msg)
    def delGroup(self,msg):
        #gid=self.msg.getValue(msg,'GroupID')
        #uid=self.msg.getValue(msg,'OwnGuid')
        GroupID=self.msg.getValue(msg,'GroupID')
        OwnGuid=self.msg.getValue(msg,'OwnGuid')
        if OwnGuid != self.guid:
            return
        logger.debug("Delete group {!s}...".format(GroupID))
        try:
            self.mysql.delGroup(GroupID,OwnGuid)
        except Exception:
            logger.error("Delete group failed!!!")
	    logger.error("{}".format(traceback.format_exc()))
        logger.debug("Done")
        arg=('DELETE_CUSTOM_GROUP',GroupID,OwnGuid)
        msg=self.msg.packMsg(*arg)
        logger.debug("Send deleted group msg : {!s}".format(msg))
        self.transport.write(msg)
    def addGroup(self,msg):
        try:
            OwnGuid=self.msg.getValue(msg,'OwnGuid')
        except KeyError:
            logger.error("add group msg has no OwnGuid")
            return
        try:
            GroupName=self.msg.getValue(msg,'GroupName')
        except KeyError:
            logger.error("add group msg has no GroupName")
            return
        try:
            Weight=self.msg.getValue(msg,'Weight')
        except KeyError:
            logger.error("add group msg has no Weight")
            return
        try:
            GroupName=GroupName.encode('utf8')
            logger.debug("Add group {!s}...".format(GroupName))
            pass
        except UnicodeDecodeError:
            pass
        try:
            self.mysql.addGroup(OwnGuid,GroupName,Weight)
            logger.debug("Done")
        except _mysql_exceptions.IntegrityError as err:
            logger.error("Failed")
            logger.error("{!s}".format(err[1]))
        group=self.mysql.getGroups(OwnGuid,GroupName)[0]
        arg=('CREATE_CUSTOM_GROUP',group)
        groupMsg=self.msg.packMsg(*arg)
        logger.debug("Send group msg : {!s}".format(groupMsg))
        self.transport.write(groupMsg)
    def updateGroupName(self,msg):
        GroupID=self.msg.getValue(msg,'GroupID')
        GroupName=self.msg.getValue(msg,'GroupName')
        OwnGuid=self.msg.getValue(msg,'OwnGuid')
        if OwnGuid != self.guid:
            return
        try:
            self.mysql.renameGroup(GroupID,GroupName)
        except :
            logger.error("Rename group failed!!!\n")
        arg=('UPDATE_CUSTOM_GROUP',GroupID,GroupName,OwnGuid)
        msg=self.msg.packMsg(*arg)
        logger.debug("Sending rename group msg : {!s}".format(msg))
        self.transport.write(msg)
    def addUser(self,msg):
        GroupID=self.msg.getValue(msg,'GroupID')
        UserGuid=self.msg.getValue(msg,'UserGuid')
        Created=int(time.time())
        self.mysql.addUser(GroupID,UserGuid)
        arg=('ADDUSER_CUSTOM_GROUP',GroupID,UserGuid,Created)
        msg=self.msg.packMsg(*arg)
        logger.debug("Sending add user msg : {!s}".format(msg))
        self.transport.write(msg)
    def delUser(self,msg):
        GroupID=self.msg.getValue(msg,'GroupID')
        OwnGuid=self.msg.getValue(msg,'OwnGuid')
        UserGuid=self.msg.getValue(msg,'UserGuid')
        if OwnGuid != self.guid:
            return 
        self.mysql.delUser(GroupID,UserGuid)
        logger.debug("Delete user {!s} of group {!s}".format(UserGuid,GroupID))
        arg=('DELETEUSER_CUSTOM_GROUP',GroupID,OwnGuid,UserGuid)
        msg=self.msg.packMsg(*arg)
        logger.debug("Sending delete user msg : {!s}".format(msg))
        self.transport.write(msg)
    def chat(self,msg):
        #if self.login :
            msgBody=self.msg.getValue(msg,'Body')
            msgCreated=int(time.time())
            msgRecvGuid=self.msg.getValue(msg,'RecvGuid')
            msgSendGuid=self.msg.getValue(msg,'SendGuid')
            blacklist=self.mysql.getBlackList(msgRecvGuid)
            if msgSendGuid not in blacklist:
                arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid)
                msg=self.msg.packMsg(*arg)
                receiver=self.factory.getClient(msgRecvGuid)
                if not receiver:
                    logger.debug("User {!s} if offline,write the msg to mysql".format(msgRecvGuid))
                    arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid,self.mysql)
		    setOffLineMsg(*arg)
                    #T=setOffLineMsg(*arg)
                    #T.setDaemon(True)
                    #T.start()
                    return
                logger.debug("Sending msgs to user {!s}".format(msgRecvGuid))
                receiver.transport.write(msg)
            else:
                logger.debug("you are in receiver's blacklist,so sorry...")
            logger.debug("Writing msgs to database...")
            arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid,self.mysql)
            try:
	        setOnLineMsg(*arg)
            except _mysql_exceptions.ProgrammingError:
                logger.error("Insert error")
            #T=setOnLineMsg(*arg)
            #T.setDaemon(True)
            #T.start()
        #else:
        #    stdout.write("[{!s}] you haven't login,sorry!!!\n".format(time.ctime()))
    def shakeWindow(self,msg):
        Type=self.msg.getValue(msg,'Type')
        RecvGuid=self.msg.getValue(msg,'RecvGuid')
        SendGuid=self.msg.getValue(msg,'SendGuid')
        blacklist=self.mysql.getBlackList(RecvGuid)
        if SendGuid not in blacklist:
            msg=self.msg.packMsg(Type,RecvGuid,SendGuid)
            logger.debug("Sending shake-window msg ...")
            logger.debug(msg)
            self.factory.clients[RecvGuid].transport.write(msg)
        else:
            logger.debug("you are in receiver's blacklist,so sorry...")
    def sendFile(self,msg):
        RecvGuid=self.msg.getValue(msg,'RecvGuid')
        SendGuid=self.msg.getValue(msg,'SendGuid')
        Type=self.msg.getValue(msg,'Type')
        Created=self.msg.getValue(msg,'Created')
        DisplayName=self.msg.getValue(msg,'DisplayName')
        Length=self.msg.getValue(msg,'Length')
	NodeID=self.msg.getValue(msg,'NodeID')
	IP=self.getId()
        blacklist=self.mysql.getBlackList(RecvGuid)
        if SendGuid not in blacklist:
            if RecvGuid in self.factory.clients:
                logger.debug("User {!s} is online...".format(RecvGuid))
                arg=(Type,Created,DisplayName,RecvGuid,SendGuid,Length,NodeID,IP)
                msg=self.msg.packMsg(*arg)
                logger.debug("Send send-file-msg to {!s}...".format(RecvGuid))
                logger.debug("{!s}".format(msg))
                self.factory.clients[RecvGuid].transport.write(msg)
	        logger.debug("Write send-file-msg to database...")
                arg=(Type,Created,DisplayName,RecvGuid,SendGuid,Length,NodeID,IP,self.mysql)
	        setSendFileMsg(*arg)
	        logger.debug("Done")
            else:
                logger.debug("User {!s} is offline...".format(RecvGuid))
                logger.debug("Give it to me...")
        else:
            logger.debug("you are in receiver's blacklist,so sorry...")
    def sendFileCancel(self,msg):
	'''
	{"Type":"FILE_TRANSFER_CANCELLED","NodeID":0,"RecvGuid":"custom-00001"} '''
	Type=self.msg.getValue(msg,'Type')
	NodeID=self.msg.getValue(msg,'NodeID')
	RecvGuid=self.msg.getValue(msg,'RecvGuid')
	ActionCode=self.msg.getValue(msg,'ActionCode')
	arg=(Type,NodeID,ActionCode)
	msg=self.msg.packMsg(*arg)
	logger.debug("Send send-file-cancel msg...")
	logger.debug(msg)
	if RecvGuid in self.factory.clients:
		self.factory.clients[RecvGuid].transport.write(msg)
	else:
		logger.debug("User {} is offline!".format(RecvGuid))
    def sendFileAccept(self,msg):
	Type=self.msg.getValue(msg,'Type')
	NodeID=self.msg.getValue(msg,'NodeID')
	RecvGuid=self.msg.getValue(msg,'RecvGuid')
	arg=(Type,NodeID)
	msg=self.msg.packMsg(*arg)
	logger.debug("Send send-file-accept msg...")
	logger.debug(msg)
	if RecvGuid in self.factory.clients:
		self.factory.clients[RecvGuid].transport.write(msg)
	else:
		logger.debug("User {} is offline!".format(RecvGuid))
	
    def sendFileRefused(self,msg):
	pass
    def updatePhoto(self,msg):
	OwnGuid=self.msg.getValue(msg,'OwnGuid')
	Photo=self.msg.getValue(msg,'Photo')
	self.mysql.updatePhoto(OwnGuid,Photo)
    def updateSignature(self,msg):
        Guid=self.msg.getValue(msg,'OwnGuid')
        Sign=self.msg.getValue(msg,'SignContent')
        logger.debug("Update user signature...")
        self.mysql.updateSignature(Guid,Sign)
        logger.debug("Done")
    def getUserBasicInfo(self,msg):
        OwnGuid=self.msg.getValue(msg,'OwnGuid')
        UserGuids=self.msg.getValue(msg,'UserGuids')
        user_basic_info=self.mysql.getUserBasicInfo(UserGuids)
        Type='USER_BASICS'
        Users=user_basic_info
        msg=self.msg.packMsg(Type,Users)
        logger.debug("Sending get-user-basic-info msg...")
        self.transport.write(msg)
        logger.debug("Done")
    def changeFontSetting(self,msg):
        OwnGuid=self.msg.getValue(msg,'OwnGuid')
        Settings=self.msg.getValue(msg,'Settings')
        logger.debug("Changing user font-setting ...")
        self.mysql.changeFontSetting(OwnGuid,Settings)
        logger.debug("Done")
    def customLogin(self,msg):
        logger.debug("Recv login msg : {!s}".format(msg))
        UserName=self.msg.getValue(msg,'UserName')
        PassWord=self.msg.getValue(msg,'PassWord')
        SerialNumber=self.msg.getValue(msg,'SerialNumber')
        try:
            UserInfo=self.mysql.getUserInfo(UserName)
        except _mysql_exceptions.OperationalError as err:
            logger.error(err)
        if not UserInfo :
            UserID=-1   # no uid
            ErrorCode=1 # no such user
            DisplayName=''
            arg=('CUSTOM_USER_LOGIN',UserID,ErrorCode,SerialNumber,DisplayName)
            msg=self.msg.packMsg(*arg)
            logger.warning("No such user,check please!!!")
            logger.debug("Sending login msg : {!s}".format(msg))
            self.transport.write(msg)
            return
        __password=UserInfo[1]
        if PassWord != __password :
            UserID=-1   # can not get uid
            ErrorCode=2 # password does not match
            DisplayName=''
            arg=('CUSTOM_USER_LOGIN',UserID,ErrorCode,SerialNumber,DisplayName)
            msg=self.msg.packMsg(*arg)
            logger.warning("Password does not match!!!")
            logger.debug("Sending login msg : {!s}".format(msg))
            self.transport.write(msg)
            return
        UserID=UserInfo[0] # real user id
        ErrorCode=0         # 0 means check pass 
        DisplayName=UserInfo[2]
        arg=('CUSTOM_USER_LOGIN',UserID,ErrorCode,SerialNumber,DisplayName)
        msg=self.msg.packMsg(*arg)
        logger.debug("Login succeed,congratulations!")
        logger.debug("Sending login msg : {!s}".format(msg))
        self.transport.write(msg)
        self.login=True

	
    def errHandle(self,msg):
        pass

    def connectionLost(self, reason):
        logger.info("Connection lost from {!s}".format(self.getId()))
        logger.debug(reason)
        self.factory.delClient(self.guid)
        self.factory.sendNotify(self.guid,self.mysql,'OFFLINE_NOTIFY')
        self.mysql.delOnLineUser(self.guid)
        logger.info("Shutdown database connection")
        self.mysql.close()
        logger.info("Done")

    def getId(self):
        return str(self.transport.getPeer().host)
コード例 #12
0
class CrawlTopMovie:

	def __init__(self,	start_num,	count_num):
		# Init function:
		# Add request Header
		# Set start&count number
		# Connect MySQL
		self.movie_url = "http://api.douban.com/v2/movie/top250?"
		self.header = {'User-Agent': 'Mozilla/5.0'}
		self.start = "start=" + str(start_num)
		self.count = "count=" + str(count_num)
		self.sql = MySql("Your MySQL setting")
		self.data = []

	def getDataFromUrl(self, url):
		# Get data
		request = urllib2.Request(url, None, self.header)
		data = urllib2.urlopen(request).read()
		return json.loads(data)

	def getSubjects(self):
		url = self.movie_url + self.start + "&" + self.count
		print url
		return self.getDataFromUrl(url)

	def crawlData(self):
		subject_data = self.getSubjects()
		if subject_data:
			for subject in subject_data["subjects"]:
				self.data = subject
				self.importToMySQL("movie")
			self.sql.quit()
		else:
			print "no subject"

	def	importToMySQL(self,	table):
		id = self.sql.getMaxID(table)
		self.sql.insert(table,
					(id,
						self.getTitle(),
						self.getMovieID(),
						self.getDoubanURL(),
						self.getRating(),
						self.getDirector(),
						self.getGenres(),
						self.getImage(),
						self.getDate()
					))

	def	getRating(self):
		return float(self.data["rating"]["average"])

	def	getDoubanURL(self):
		return self.data["alt"]

	def	getDirector(self):
		return self.data["directors"][0]["name"]

	def	getGenres(self):
		return str(self.data["genres"])

	def	getMovieID(self):
		return int(self.data["id"])

	def	getImage(self):
		return	self.data["images"]["large"]

	def	getTitle(self):
		return	self.data["title"]

	def	getDate(self):
		return	self.data["year"]
コード例 #13
0
class BookCrawl:

    """Crawl book data douban.com by API"""

    def __init__(self, book_num):
        self.douban_url = "https://api.douban.com/v2/book/"
        self.start_num = book_num[0]
        self.end_num = book_num[1]
        self.header = {'User-Agent': 'Mozilla/5.0'}
        self.sql = MySql("Your MySQL setting")
        self.data = []

    def __iter__(self):
        return self

    def next(self):
        if self.start_num < self.end_num:
            try:
                self.crawlData(self.douban_url + str(self.start_num))
            except:
                print self.start_num
            self.start_num += 1
            return self.start_num
        else:
            self.sql.quit()
        raise StopIteration()

    def test(self, url):
        self.data = self.getDataFromUrl(url)
        print self.getPrice()

    def crawlData(self, url):
        self.data = self.getDataFromUrl(url)
        self.insertBookInfo("bookinfo")
        self.insertBookTag("booktag")

    def getDataFromUrl(self, url):
        request = urllib2.Request(url, None, self.header)
        data = urllib2.urlopen(request).read()
        return eval(data)

    def getRating(self):
        return float(self.data["rating"]["average"])

    def getAuthor(self):
        if self.data["author"] == []:
            return ""
        else:
            return self.data["author"][0]

    def getPublishDate(self):
        date_str = self.data["pubdate"].split("-")
        date_format = ["%y", "%m", "%d"]
        format_type = "-".join(date_format[:len(date_str)])
        date = datetime.datetime.strptime(self.data["pubdate"][2:],
                                          format_type).date()
        return date

    def getImage(self):
        return self.data["image"]

    def getBookID(self):
        return int(self.data["id"])

    def getPublisher(self):
        return self.data["publisher"]

    def getTitle(self):
        return self.data["title"]

    def getUrl(self):
        return self.data["alt"]

    def getSummary(self):
        return self.data["summary"]

    def getPrice(self):
        price = self.data["price"]
        return float(re.search(r'\d+\.?\d*', price).group(0))

    def getBookTag(self):
        tags = self.data["tags"]
        if tags:
            return [item["name"] for item in tags]
        else:
            return []

    def insertBookInfo(self, table):
        id = self.sql.getMaxID(table)
        self.sql.insert(table,
                        (id,
                         self.getBookID(),
                         self.getTitle(),
                         self.getAuthor(),
                         self.getPublisher(),
                         self.getPublishDate(),
                         self.getPrice(),
                         self.getRating(),
                         1,
                         self.getSummary(),
                         self.getUrl(),
                         self.getImage())
                        )

    def insertBookTag(self, table):
        if self.getBookTag():
            for item in self.getBookTag():
                self.sql.insert(table,
                                (item,
                                 self.getBookID())
                                )
コード例 #14
0
ファイル: init_fund.py プロジェクト: Lyncaicai/autotest
def init_fund():
    bms = MySql('192.168.0.32', 3306, 'ceshi', 'ceshi', 'gmf_bms')
    sql = 'delete from product_group where org_id="23"'
    bms.excute_sql(sql)
    bms.close()