python爬虫,抓取oracle-base上的一些常用脚本
以下利用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):
#获取类似于<li><a href="script.php?category=script_creation&file=table_constraints_ddl.sql">table_constraints_ddl.sql</li>
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!‘
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。