以下利用python实现在http://www.oracle-base.com/dba上抓取上有的数据库常用脚本,时间关系,写的比较粗糙,分享给大家,希望大家一起进步。

 

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:抓取http://www.oracle-base.com/dba上的脚本
#   版本:0.1
#   作者:carefree
#   日期:2014-03-12
#   语言:Python 2.7
#   功能:抓取http://www.oracle-base.com/dba上的脚本
#---------------------------------------

import urllib 
import urllib2
import cookielib
import re
import string
import os
class GetScript: 
    # 申明相关的属性 
    def __init__(self):
        self.baseUrl='http://www.oracle-base.com/dba/'
        self.initUrl='http://www.oracle-base.com/dba/scripts.php' #数据抓取测试页面
        self.results = []    #存储当前的抓取的脚本
        self.ls = os.linesep   #行终止符
        self.category =''       #类型
        self.filename=''        #脚本名称
        self.content=''         #脚本内容
       
    #抓取页面上的脚本名称以及类型
    def get_data(self):
        result = urllib2.urlopen(self.initUrl)   #打开页面
        self.deal_data(result.read())
      
    # 处理页面内容
    def deal_data(self,myPage):
        #获取类似于

  • table_constraints_ddl.sql

  •         result = re.findall('(script[\S]+(\s+)*?.sql")',myPage)
            for x in result:
                #获取类型以及文件名
                a = x[0].find('&')
                self.category = x[0][20:a]
                self.filename = x[0][x[0].find('=',a+1)+1:-1]
                result.remove(x)
                self.get_script()

        def get_script(self):
            url = self.baseUrl+self.category+'/'+self.filename
            #获取脚本内容
            self.content = urllib2.urlopen(url).read()

            #将抓取的结果写入文件
            self.write_tofile()
           
        #将抓取的结果写入文件   
        def write_tofile(self):
            fname = self.category +'\\' + self.filename
            #fname = self.filename
            while True:
                if not os.path.exists(self.category):
                    os.makedirs(r'%s/%s'%(os.getcwd(),self.category))
                if os.path.exists(fname):
                    print "ERROR: file '%s\%s' already existing!" %(os.getcwd(),fname) +''
                    break
                    #fname = raw_input('Input the another file name: ')
                else:
                    fobj = open(fname,'w')
                    fobj.writelines(self.content)
                    fobj.close()
                    print 'Have the file is written to '+os.getcwd()+'\\'+fname+'!'
                    break

            #print '数据已经写入'+fname+'文件中,处理完成'

    #测试代码
    if __name__ == '__main__':
        #print os.getcwd()
        mySpider = GetScript() 
        mySpider.get_data()
        print 'Already processing is completed!'