收藏 分销(赏)

基于Python语言的网络数据挖掘试验参考指导书.doc

上传人:精**** 文档编号:2510035 上传时间:2024-05-31 格式:DOC 页数:26 大小:277.54KB
下载 相关 举报
基于Python语言的网络数据挖掘试验参考指导书.doc_第1页
第1页 / 共26页
基于Python语言的网络数据挖掘试验参考指导书.doc_第2页
第2页 / 共26页
基于Python语言的网络数据挖掘试验参考指导书.doc_第3页
第3页 / 共26页
基于Python语言的网络数据挖掘试验参考指导书.doc_第4页
第4页 / 共26页
基于Python语言的网络数据挖掘试验参考指导书.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、基于Python语言网络数据挖掘实验指引书电子科技大学信息与软件工程学院二一四年6月一、 实验教学目和规定:实验目:本课程实验旨在加深学生对于网络大数据挖掘理解,培养学生分析、设计、实现基于Python语言网络数据挖掘算法,掌握科学实验办法,为后来其她专业课学习打下坚实基本。该实验内容采用循序渐进方式,从Python语言基本语法入手,在加深学生对于Python语言熟悉基本上突出数据挖掘应用。实验提供功能规定,学生自己拟定设计方案和需要思考如何设计最优化算法,并完毕成果记录和分析,充分发挥学生创造性和积极性。实验规定:理解并掌握Python语言基本语法、可以使用Python读取或写入数据表、获取

2、并分析网络文本数据、获取并解决图像数据等。二、 Python开发环境简介:本课程实验使用Python开发环境为Python IDLE,其顾客界面图见图1所示。IDLE是开发python程序基本集成开发环境,具备基本IDE功能,是Python教学不错选取。当安装好python后来,IDLE就自动安装好了,不需要此外去找。同步,使用Eclipse这个强大框架时IDLE也可以非常以便调试Python程序。其基本功能涉及语法加亮、段落缩进、基本文本编辑、TABLE键控制、调试程序。打开 Idle 后浮现一种增强交互命令行解释器窗口(具备比基本交互命令提示符更好剪切、粘贴、回行等功能)。除此之外,尚有一

3、种针对 Python 编辑器(无代码合并,但有语法标签高亮和代码自动完毕功能)、类浏览器和调试器。菜单为 TK “剥离”式,也就是点击顶部任意下拉菜单虚线将会将该菜单提高到它自己永久窗口中去。特别是 Edit 菜单,将其“靠”在桌面一角非常实用。Idle 调试器提供断点、步进和变量监视功能。图1 Python IDLE界面图三、 实验项目名称及目规定:实验项目1 Python语言基本语法及简朴应用1、实验目1) 掌握Python语言基本语法2) 掌握Python语言中创立模块办法3) 理解Python语言中定义类及其用法4) 学习使用Python语言输出斐波那契数列办法5) 学习使用Pytho

4、n语言实现删除一种list里面重复元素办法2、实验内容1)依照Python基本语法功能设计出实现输出斐波那契数列办法,并比较不同实现办法性能。2)依照Python语言中排序和循环功能,实现删除一种list里面重复元素3、实验原理1) 设计输出斐波那契数列Python程序:一方面调用raw_input输入要打印斐波那契数列长度,然后把斐波那契数列存储于一种序列当中,并逐个打印序列元素。此实验某些实当代码如下#通过输入斐波那契数列长度打印斐波那契数列 FibonacciUptoNumer = int(raw_input(Please input a Fibonacci Series up to N

5、umber :)n = FibonacciUptoNumerfibs = 0,1for number in range(n): fibs.append(fibs-2 + fibs-1)2) 设计删除一种list里面重复元素程序:一方面调用List.sort()对序列进行排序,然后调用last = List-1语句从后向前找出重复元素,并逐个打印非重复元素。此实验某些实当代码如下if List:List.sort()last = List-1for i in range(len(List)-2,-1,-1): if last=Listi:del Listi else:last=Listiprin

6、t List4、 实验环节1)设计输出斐波那契数列Python程序l 分析实验规定l 逐个打印输出斐波那契数列元素l 记录程序代码l 记录并分析实验成果2)设计程序删除一种list里面重复元素l 分析实验规定l 对list进行排序l 从后向前查找并删除list中重复元素l 记录程序代码l 记录并分析实验成果实验项目2 使用Python读写Excel数据1、实验目1)强化Python程序设计和编程能力2)学习两种读取Excel数据办法3)学习写入Excel数据办法4)掌握如何读写其她格式数据办法5)掌握如何比较不同读写办法运算性能2、实验内容1)用xlrd模块中open_workbook实现打开

7、Excel数据表,并设计使用索引和名称两种办法读取Excel数据,最后写入csv文献中。2)用datetime模块中datetime.now来计算两种不同读取办法所用CPU时间,从而比较并分析不同算法性能。3、实验原理1)Python语句读取Excel表数据时,一方面要调用xlrd模块,然后使用语句data = xlrd.open_workbook(excelFile.xls)打开Excel表格。当一种Excel表格中包括各种Sheet时,可以通过索引或者名称顺序获取某一种Sheet中数据。使用语句分别为table = data.sheet_by_index(0)和table = data.s

8、heet_by_name(uSheet1)。当获取某个Sheet数据并存储在工作表table后,获取获取整行和整列值(数组)语句为table.row_values(i)和table.col_values(i),获取行数和列数语句为nrows = table.nrows和ncols = table.ncols,循环获取行数据语句为for i in range(nrows):print table.row_values(i)。此实验某些实当代码如下#依照索引获取Excel表格中数据def excel_table_byindex(file= abc.xls,colnameindex=0,by_ind

9、ex=0): data = open_excel(file) table = data.sheets()by_index nrows = table.nrows #行数 colnames = table.row_values(colnameindex) #某一行数据 list = for rownum in range(1,nrows): row = table.row_values(rownum) if row: app = for i in range(len(colnames): appcolnamesi = rowi list.append(app) return listdef ex

10、cel_table_byname(file= abc.xls,colnameindex=0,by_name=abc): data = open_excel(file) table = data.sheet_by_name(by_name) nrows = table.nrows #行数 colnames = table.row_values(colnameindex) #某一行数据 list = for rownum in range(1,nrows): row = table.row_values(rownum) if row: app = for i in range(len(colnam

11、es): appcolnamesi = rowi list.append(app) return list在该实验中,学生需用前述Excel数据操作语句实现读取某一种Sheet数据功能,并在此基本上,思考如何读取其她格式数据,记录Python代码,并分析实验成果。2)Python语句写入Excel表数据时,一方面要调用pyExcelerator模块,然后使用语句w = Workbook()和ws = w.add_sheet(excelFile.xls)创立一种空白工作表。在某一种cell写入数据语句为ws.write (i,j,string),而w.save(mini.xls)实现了存储写入后

12、Excel文献。此实验某些实当代码如下from pyExcelerator import *w = Workbook() #创立一种工作簿ws = w.add_sheet(test) #创立一种工作表ws.write(0,0,uestc) #在1行1列写入uestcws.write(0,1,Sofrware) #在1行2列写入Softwarews.write(1,0,cs) #在2行1列写入csw.save(mini.xls) #保存至mini.xls文献中在该实验中,学生需用前述Excel数据操作语句实现写入某一种Sheet数据功能,并在此基本上,思考如何写入其她格式数据(如csv格式),记

13、录Python代码,并分析实验成果。3)比较两种不同读取Excel数据办法时,需要计算每种办法运营时间。一方面导入datetime模块,并调用datetime.now()函数,记录某一段代码运营先后时间点,通过开始和结束时间点差值计算出程序运营时间。此实验某些实当代码如下starttime = datetime.datetime.now()tables = excel_table_byindex()for row in tables: print rowendtime = datetime.datetime.now()print endtime - starttime starttime =

14、datetime.datetime.now()tables = excel_table_byname()for row in tables: print rowendtime = datetime.datetime.now()print endtime - starttime在该实验中,学生需用前述CPU时间控制语句实现计算某一段代码运算时间,并在此基本上,比较并分析两种Excel数据读取办法性能。记录Python代码,并分析实验成果。4、 实验环节1)设计按名称和按索引读取Excel数据程序l 分析实验规定l 按行打印Excel表中数据l 记录程序代码l 记录并分析实验成果2)设计写入Exc

15、el数据程序l 分析实验规定l 按行将数据写入Excel表中l 记录程序代码l 记录并分析实验成果3)设计计算程序运营时间程序l 分析实验规定l 记录程序代码l 比较并分析实验成果l 总结,撰写实验报告实验项目3 使用Python实现网络爬虫算法1、实验目1)强化Python程序设计和编程能力2)学习网络爬虫算法原理3)学习使用Python语言实现网络爬虫算法2、实验内容1)理解网络爬虫算法原理,并设计使用Python语言获取网页数据程序。2)用Python语言中threading和GetUrl模块对网站中URL进行收集。3、实验原理1) 爬虫算法原理:网络爬虫(又被称为网页蜘蛛,网络机器人,

16、网页追逐者),是一种按照一定规则,自动抓取万维网信息程序或者脚本。诸多搜索引擎都使用爬虫提供最新数据,搜索引擎运用顾客访问过页面一种副本进行索引,以提供迅速访问。网络爬虫也可以在web上用来自动执行某些任务,例如检查链接,确认html代码;也可以用来抓取网页上某种特定类型信息,例如抓取电子邮件地址。本实验中使用网络爬虫算法是广度优先搜索(BFS)。广度优先搜索方略是指在抓取过程中,在完毕当前层次搜索后,才进行下一层次搜索。有诸多研究将广度优先搜索方略应用于聚焦爬虫中。其基本思想是以为与初始URL在一定链接距离内网页具备主题有关性概率很大。此外一种应用是将广度优先搜索与网页过滤技术结合使用,先用

17、广度优先方略抓取网页,再将其中无关网页过滤掉。这些办法缺陷在于,随着抓取网页增多,大量无关网页将被下载并过滤,算法效率将变低。2)Python语句在某一种网页上获取数据时,一方面要分析网页HTML源代码,咱们以淘宝网页中商品分类()为例,获取所有一级类别和二级类别标题。本实验中要调用urllib2和sgmllib.SGMLParser模块,并使用语句content = urllib2.urlopen(网页URL).read()来获取网页内容。并使用list.feed(content)语句将网页内容存入列表,进行解决。此实验某些实当代码如下class ListName1(SGMLParser):

18、def _init_(self):SGMLParser._init_(self)self.is_h4 = self.name = def start_h4(self,attrs):self.is_h4 = 1def end_h4(self):self.is_h4 = def handle_data(self,text):if self.is_h4 = 1:self.name.append(text)class ListName2(SGMLParser):def _init_(self):SGMLParser._init_(self)self.is_h5 = self.name = def st

19、art_h5(self,attrs):self.is_h5 = 1def end_h5(self):self.is_h5 = def handle_data(self,text):if self.is_h5 = 1:self.name.append(text)content = urllib2.urlopen().read()listname1 = ListName1()listname2 = ListName2()listname1.feed(content)listname2.feed(content)在该实验中,学生需用前述爬虫算法实现语句实现写入读取淘宝网页商品分类标题功能,并在此基本

20、上,思考如何实现读取其她网页数据办法,记录Python代码,并分析实验成果。3)在获取网站上URL时,需要调用GetUrl模块。本实验中通过调用threading 模块采用多线程算法实现网站URL获取。此实验某些实当代码如下def Craw(self,entryUrl): #这是一种深度搜索,到g_toDlUrl为空时结束 g_toDlUrl.append(entryUrl) self.logfile.write(Entry:n) self.logfile.write(entryUrl) depth = 0 while len(g_toDlUrl) != 0 and depth Depth +

21、 str(depth)+:n self.logfile.write(content) i = 0 while i + g_toDlUrli + n self.logfile.write(content) i += 1 class CrawlerThread(threading.Thread): def _init_(self,url,fileName): threading.Thread._init_(self) self.url = url #本线程下载url self.fileName = fileName def run(self): #线程工作-下载html页面 global g_mu

22、tex global g_failedUrl global g_dledUrl try: f = urllib.urlopen(self.url) s = f.read() fout = file(self.fileName,w) fout.write(s) fout.close() except: g_mutex.acquire() #线程锁-锁上 g_dledUrl.append(self.url) g_failedUrl.append(self.url) g_mutex.release() #线程锁-释放 print Failed downloading and saving,self.

23、url return None #记着返回! g_mutex.acquire() #线程锁-锁上 g_pages.append(s) g_dledUrl.append(self.url) g_mutex.release() #线程锁-释放在该实验中,学生需用上述网络爬虫算法和多线程控制语句实现获取某一网站所有URL程序,并在此基本上,比较并分析采用不同线程数时算法性能。记录Python代码,并分析实验成果。4、实验环节1)设计某一种网页上获取数据程序l 分析实验规定l 打印网页上获取数据l 记录程序代码l 记录并分析实验成果2)设计多线程获取网站URL程序l 分析实验规定l 打印网站上有关UR

24、Ll 比较不同线程数算法性能l 记录程序代码l 记录并分析实验成果实验项目4 使用Python获取社交网络数据1、实验目1)强化Python程序设计和编程能力2)学习社交网络OAUTH合同原理3)学习使用Python语言获取社交网络数据2、实验内容1)理解社交网络OAUTH合同原理,并学习获取CONSUMER_KEY、CONSUMER_SECRET、USER_TOKEN、USER_SECRET办法。2)用Python语言中Json、OS、Linkedin模块对LinkedIn网站中联系人名单进行收集。3、实验原理1)社交网络OAUTH合同原理:OAUTH合同为顾客资源授权提供了一种安全、开放而

25、又简易原则。与以往授权方式不同之处是OAUTH授权不会使第三方触及到顾客帐号信息(如顾客名与密码),即第三方无需使用顾客顾客名与密码就可以申请获得该顾客资源授权,因而OAUTH是安全。本实验中Linkedin网站OAUTH合同是采用HMAC-SHA1加密。开发者需要注册LinkedIn账户,获得CONSUMER_KEY(即API Key) 和CONSUMER_SECRET。KEY跟SECRET使用方式跟其她某些合同中公钥私钥方案相类似,你可以使用你所熟悉编程语言将KEY和SECRET结合,为你发出每个祈求添加签名,以此来向Linkedin开放平台表白自己身份合法性。然后依照CONSUMER_K

26、EY和CONSUMER_SECRET获取USER_TOKEN和USER_SECRET。这个环节重要有两个目:第一,告诉Linkedin将要做什么;第二,告诉Linkedin在callback里要做什么。此外,USER_TOKEN和USER_SECRET可以协助提供ACCESS TOKEN。实当代码如下:access_token_url = token=oauth.Token(request_tokenoauth_token,request_tokenoauth_token_secret)token.set_verifier(oauth_verifier)client = oauth.Clien

27、t(consumer,token)resp,content = client.request(access_token_url,POST)access_token = dict(urlparse.parse_qsl(content)print Access Token:print - oauth_token = %s % access_tokenoauth_tokenprint - oauth_token_secret = %s % access_tokenoauth_token_secretprintprint You may now access protected resources u

28、sing the access tokens above.Print在该实验中,学生需用前述OAUTH合同原理实现获取Linkedin社交网络ACCESS TOKEN,并在此基本上,思考如何实现读取其她社交网络(如新浪微博)ACCESS TOKEN办法,记录Python代码,并分析实验成果。2)Python语句获取社交网站顾客信息时,一方面要获得ACCESS TOKEN,然后调用os.path.join语句将顾客有关信息存储到CSV或者XLS文献中,最后调用PrettyTable模块打印顾客信息表。此实验某些实当代码如下# Instantiate the developer authentic

29、ation classauth=linkedin.LinkedInDeveloperAuthentication(CONSUMER_KEY,CONSUMER_SECRET,USER_TOKEN,USER_SECRET,RETURN_URL,permissions=linkedin.PERMISSIONS.enums.values()# Pass it in to the app.app = linkedin.LinkedInApplication(auth)# Use the app.app.get_profile()import jsonimport osconnections = app.

30、get_connections()connections_data = os.path.join(C:/,Users,顾客名,Desktop,save.csv)f = open(connections_data,w)f.write(json.dumps(connections,indent=1)f.close()from prettytable import PrettyTable # pip install prettytablept = PrettyTable(field_names=Name,Location)pt.align = l pt.add_row(cfirstName + +

31、clastName,clocationname) for c in connectionsvalues if c.has_key(location)在该实验中,学生需用前述社交网络信息获取语句实现授权顾客LinkedIn联系人信息,并在此基本上,思考如何实现获取其她社交网络(微博)顾客信息办法,记录Python代码,并分析实验成果。4、实验环节1)设计社交网络授权顾客ACCESS TOKEN程序l 分析实验规定l 记录程序代码2)设计社交网络授权顾客联系人信息程序l 分析实验规定l 打印授权顾客联系人信息l 导入授权顾客联系人信息l 记录程序代码l 记录并分析实验成果实验项目5 使用Pytho

32、n记录分析社交网络数据1、实验目1)强化Python程序设计和编程能力2)学习社交网络数据清洗和数据记录分析办法3)学习使用Python语言记录分析社交网络数据2、实验内容1)学习社交网络中联系人职位、公司、年龄等信息数据清洗和记录分析办法。2)用Python语言中Counter、itemgetter等模块对LinkedIn网站中联系人名单信息进行初步记录分析。3、实验原理1)数据清洗:数据清洗是指发现并纠正数据文献中可辨认错误,涉及检查数据一致性,解决无效值和缺失值等。由于数据仓库中数据是面向某一主题数据集合,这些数据从各种业务系统中抽取而来并且包括历史数据,这样就避免不了有数据是错误数据、

33、有数据互相之间有冲突,这些错误或有冲突数据显然是咱们不想要,称为“脏数据”。咱们要按照一定规则把脏数据清除,这就是数据清洗。而数据清洗任务是过滤那些不符合规定数据,将过滤成果交给业务主管部门,确认与否过滤掉还是由业务单位修正之后再进行抽取。不符合规定数据重要是有不完整数据、错误数据、重复数据三大类。本实验中使用数据来源是Linkedin网站中联系人信息,需要清洗数据重要是由于数据名称不统一导致。例如,联系人公司中诸多都带有后缀Inc.,Co.等,联系人职位中诸多带有Prof.,Dr.等,这些信息在记录时会有干扰作用。例如IBM Inc.和IBM代表都是IBM公司,但程序在进行记录分析时会误以为

34、是两个不同公司。实当代码如下:transforms = (,Inc.,),(,Inc,),(,LLC,),(,LLP,),( LLC,),( Inc.,),( Inc,)csvReader = csv.DictReader(open(CSV_FILE),delimiter=,,quotechar=)contacts = row for row in csvReadercompanies = cCompany.strip() for c in contacts if cCompany.strip() != for i,_ in enumerate(companies): for transfor

35、m in transforms: companiesi = companiesi.replace(*transform)在该实验中,学生需用前述数据清洗办法实现对Linkedin社交网络联系人信息进行数据清洗,并在此基本上,思考如何实现清洗其她社交网络(如新浪微博)联系人信息办法,记录Python代码,并分析实验成果。2)Python语句分析清洗后社交网站联系人信息时,一方面要调用Counter模块语句将联系人有关信息进行记录,并调用PrettyTable模块将联系人信息存储在表中,最后调用print语句按照降序打印顾客信息表。此实验某些实当代码如下pt = PrettyTable(field

36、_names=Company,Freq)pt.align = cc = Counter(companies)pt.add_row(company,freq)for (company,freq) in sorted(c.items(),key=itemgetter(1),reverse=True) if freq 0print pttitles = cJob Title.strip() for c in contacts if cJob Title.strip() != for i,_ in enumerate(titles): for transform in transforms: titl

37、esi = titlesi.replace(*transform)pt2 = PrettyTable(field_names=Job Title,Freq)pt2.align = cc = Counter(titles)pt2.add_row(title,freq)for (title,freq) in sorted(c.items(),key=itemgetter(1),reverse=True) if freq 0在该实验中,学生需用前述记录分析办法分析LinkedIn联系人信息,并在此基本上,思考如何实现分析其她社交网络(微博)联系人信息办法,记录Python代码,并分析实验成果。4、实

38、验环节1)设计社交网络数据清晰程序l 分析实验规定l 清洗网络中脏数据l 记录程序代码2)设计记录分析社交网络联系人信息程序l 分析实验规定l 记录并打印联系人列表中信息数据l 记录程序代码l 记录并分析实验成果实验项目6 使用Python大批量获取网络图片数据1、实验目1)强化Python程序设计和编程能力2)理解大批量获取网络图片原理3)学习使用Python语言批量获取网络图片2、实验内容1)理解大批量获取网络图片原理,并掌握批量获取网络图片办法。2)用Python语言中urllib、urllib2等模块对图虫网站中图片进行批量下载,并存储在指定文献夹中。3、实验原理1)批量获取网络图片办

39、法:批量获取网络图片办法是通过解析网页HTML文献,运用正则表达式把源代码中图片地址过滤出来,从而依照过滤出来图片地址下载网络图片。详细来说,批量获取网络图片办法分为三种,一是用微软提供扩展库win32com来操作IE,二是用seleniumwebdriver,三是用python自带HTMLParser解析。win32com可以获得类似js里面document对象,但文献是只读。selenium则提供了对Chrome,IE,FireFox等浏览器支持,每种浏览器均有execute_script和find_element_by_xx办法,可以以便执行js脚本(涉及修改元素)和读取html里面元素

40、。局限性是selenium只提供对python2.6和2.7支持。HTMLParser则是需要自己写个类继承基类,重写解析元素办法。2)本实验中使用批量获取网络图片办法,属于第三种办法。一方面通过urllib2.urlopen(url).read().decode(utf-8)语句解析HTML文献,再使用re.findall将把源代码中图片地址过滤出来,最后使用urllib.urlretrieve(imgurl,target)语句将图片下载到指定途径文献夹中。实当代码如下:#获取二级页面urldef findUrl2(html): re1 = rd+/d+/|http:/w+(?!photos

41、) url2list = re.findall(re1,html) url2lstfltr = list(set(url2list) url2lstfltr.sort(key=url2list.index) #print url2lstfltr return url2lstfltr#获取html文本def getHtml(url): html = urllib2.urlopen(url).read().decode(utf-8)#解码为utf-8 return html#下载图片到本地def download(html_page ,pageNo): #定义文献夹名字 x = time.localtime(time.time()foldername=str(x._getattribute_(tm_year)+-+str(x._getattribute_(tm_mon)+-+str(x._getattribute_(tm_mday) re2=r+/f/.+.jpg imglist=re.findall(re2,html_page) print imglist download_img=None

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服