基于Python的手机舆情系统_第1页
基于Python的手机舆情系统_第2页
基于Python的手机舆情系统_第3页
基于Python的手机舆情系统_第4页
基于Python的手机舆情系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-z.基于Python的手机舆情系统设计与实现摘要系统主要就是针对手机行业文章进展抓取并分析统计,根据用户定义关键词在数据库中全文搜索匹配相应文章,然后给用户进展展示,为用户提供便利。系统利用Pythonurllib对权威手机资讯进展网页抓取,然后用Pythonre包和正则表达式在网页中匹配到相关数据,再用Pythonw3lib.html去掉页面中臃肿的html标签。进展网页提纯,并利用MySQL进展存储。系统后台运用Pythonflask进展开发实现,前端则运用html、css、javascript、jquery进展开发并实现简单的页面交互。利用Python和Sublim工具对系统的页面和效劳器进程编程和部署,系统主要是效劳器端入手建立根本的前后调一体化流程。系统主要有自定义频道、自定义栏目〔同时设置栏目关键词〕、查看更多等功能,用户在栏目中查看根据关键词匹配到的文章列表。关键词:舆情手机资讯TheDesignAndImplementationOfMobilePublicOpinionSystemBasedOnPythonAbstractSystemismainlyaimedatthemobilephoneindustryarticlestograbandanalysisofstatistics,basedonuser-definedkeywordsfull-te*tsearchmatchingcorrespondingarticlesinthedatabase,andthentouserstodisplay,provideconveniencefortheuser.

SystemUSESPythonurllibcellphoneinformationtowebsitesforauthoritytograb,andthenusePythonrepackageandregulare*pressionmatchingtotherelevantdatainthewebpage,thenusePythonw3lib.ThebloatedHTMLtagsinHTMLtoremovepageforwebdatarefinement,anddepositedintheMySQLdatabaseforstorage.SystemsusePythonflaskframeworkfordevelopmentbackground,frontendusesHTML,CSS,javascript,jqueryinteractiontodevelopandimplementasimplepage.UsingPythonandSublimtoolspageonthesystemandtheserverprocessprogramminganddeployment,beforeandafterthesystemismainlytheserversideofthebasicintegrationprocess.Channelsystemmainlyincludecustom,customcolumns(atthesametimesetupkeywords),readmore,andotherfunctions,usersinthesectionviewbasedonkeywordmatchingtothelistofarticles.Keywords:PublicopinionPhoneinformation-z.目录TOC\o"1-2"\h\z\u前言图4.1模块功能图第4.1节用户登录程序运行效果图如图4.2所示:图4.2用户登陆页面设计登录验证图如图4.3所示:图4.3登录验证图在登陆页面输入用户名和密码以后,点击提交按钮,触发jquery绑定事件,jquery通过input输入框的ID来获取用户输入的用户名密码。然后由jqueryaja*利用POST方式把用户名密码传给后台,由后台再查数据库user表中的数据来进展比对。如果用户名密码正确,后台则返回前台的json串没有error,则前端就认为用户名密码正确。则做相应的跳转;如果后台在数据库未找到用户名或者密码错误,则后台返回前端带有error的json串,则前端读取到错误信息,则不做相应的跳转。用户就停留在登录页面继续登录,直到后台判断用户名密码正确返回前端没有error的json串,则用户登录成功。Jquery利用aja*post方式传json给后台关键代码见附录代码片段1;后台制作登录接口,及查询数据库user表关键代码见附录代码片段2。除此之外,利用jquery在提交请求之前判断用户名和密码是否为空,只要有一个为空,则请求无法发送,并在页面中警告〔红色字体〕用户名和密码不能为空。其中关键jquery代码为:if(!userInfo.user_name||!userInfo.password){$('#errorInfo').html('用户名和密码不能空').show();return;}第4.2节自定义频道描述:频道就是起到一个根标题的作用,可以把频道理解成平时归置物品或者整理信息的时候的一个举足轻重的分类标签。如果没有频道的分类,在你添加的栏目少时,并不感觉怎么样,当添加的栏目多的时候,就会明显乱成一团。这就是设定频道的意义。程序运行效果图如图4.4—图4.6所示:图4.4添加频道提示图4.4所示是用户首次登录系统,或数据库中没有找到相关用户中的频道数据时,提示添加新的导航频道。图4.5交互模态框图4.5是点击编辑频道按钮,弹出添加导航交互模态框。图4.6添加导航图4.6所示是点击添加导航按钮,出现一个input框并在输入框输入自定义频道名称。图4.7频道页面图4.7所示点击编辑完成会提示即将完成此操作是否确定,点击确定,添加成功添加自定义频道。默认跳转到新创立的频道页面下,假设因程序出错或因为不明因素导致添加失败则弹出报错模态框。点击编辑完成后程序的运行过程,点击编辑完成后,js先判断input输入框中是否为空。频道名为空时,提示错误频道名字不能为空。如果频道名字js验证通过,则通过aja*向后台提交请求,后台则通过api针对数据做处理。直接操作数据库,添加频道。后台接口处理数据,并操作数据库关键代码见附录代码片段3。第4.3节自定义栏目栏目就是频道的的容,也就是相当于你在整理信息是被贴上标签的容。程序运行效果图如图4.8—图4.9所示:图4.8系统添加栏目图4.7表示当前频道下数据库中没有搜索到相关栏目,提示点击按钮添加栏目页面。图4.9添加栏目图4.8点击添加栏目按钮之后,弹出添加栏目交互模态框。栏目名称为此栏目的名字,栏目位置是选择位于现有的导航里面之一,栏目宽度可以选择半栏或者通栏,暂时不提供自定义宽度;栏目关键字输入。其中栏目中的所有文章列表都是根据关键字查询出来。图4.10栏目图4.9是模态框中所填容符合要求,并点击确定按钮创立成功后的栏目框。栏目所有的文章都是根据输入关键词‘魅族’在本地数据库中搜索出来的文章,后面的跟着文章的来源和日期。如果想直接查看文章,那直接点击文章标题即可查看整篇文章。其中文章容全部是在数据库中的存储的文章容,其中把所有的html标签全部去除,只保存了<p>和<img>标签,所以大致保存了文章的布局和文章图片。如图4.10所示:图4.11文章容如果文章列表中没有想看的文章,可以直接点击‘查看更多’,即可看到根据关键词查看的所有文章,在所有文章中可以中也可以直接查看文章容也可以直接翻开新的页面查看原文章如图4.12所示:图4.12查看更多页面则如果没有匹配到文章,栏目则显示为空,则这个栏目就废弃了。就是为了防止类似的情况发生,在栏目的右上角设置了一个栏目设置按钮,如图4.13所示:图4.13栏目设置点击编辑栏目,可以重新针对栏目属性进展修改,包括针对栏目关键词的修改,将重新赋予栏目新的生命。如果真不需要类似的此栏目,则可以直接点击移除栏目,就可以直接删除。则点击编辑栏目程序运行的关键代码见附录代码片段4.第4.4节爬虫设计与实现爬虫数据采集,就是通过抓取事先决定好的网址,且根据的文章列表生文章的URL列表。然后进展文章网页的抓取、分析并存入数据库中。爬虫关键代码见附录代码片段5。工作流程图如图4.14所示:根域名抓取主页面解析源文件URL列表页面抓取根域名抓取主页面解析源文件URL列表页面抓取采集数据库图4.14爬虫工作流程图第4.5节系统数据库构造表4.1用户表(user)FieldNameFieldTypeSizeNullPrimarykeyImplementationidint11否是用户iduser_namevarchar10否否用户名user_passwordvarchar10否否用户密码表4.1频道表(channel)FieldNameFieldTypeSizeNullPrimarykeyForeignkeyImplementationchannel_idint11否是否频道idchannel_namevarchar10否否否频道名order_idint11否否否顺序ididint11否否否用户id表4.1栏目表(columns)FieldNameFieldTypeSizeNullPrimarykeyForeignkeyImplementationcolumn_idint11否是否栏目idcolumn_namevarchar10否否否栏目名称order_idint11否否否栏目加载顺序idstylevarchar10否否否栏目样式rulesvarchar50否否否栏目的关键字channel_idint11否否是频道id表4.1管理员表(admin)FieldNameFieldTypeSizeNullPrimarykeyImplementationadmin_idint11否是频道idadmin_namevarchar10否否频道名admin_passwordint11否否顺序id第5章系统测试第5.1节系统测试目的与意义系统测试对于一个来说是很重要的局部。在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可防止地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试的最重要目的是发现其未发现的错误。第5.2节测试过程在一开场测试的时候,由于数据库中的数据假的,是在没有规则的情况下随意输入的,根本没有实用的可能性,为了让系统完善。在测试过程当中全部采用真实有效的数据进展测试。这样才能真实的反响系统功能实现的真实情况。发现了真实存在的情况,那就需要不断的去修改,去完善。不要怕问题多,不要怕bug多,没解决一个bug则系统就离完美更进一步。有的问题是不容易被发现的,那就需要我们耐心的反复的一遍遍的进展测试、调试,找到问题并解决问题。5.2.1程序风格统一的测试对于一个的成功与否,对于这个最重要的就是他必须要有一个优秀的设计师,然后是一个具有一定优秀页面设计功底的程序员,一个制作好的来说,设计是他的灵魂和核心,首先,最重要的是要给用户一种视觉冲击,也就是界面的美感。本身的构思与设计,例如:文字容的排版、图片的选择与制作、静态无声的图文等,另外一方面,也就是延伸的设计。它具体包括了主题的设定、数据的交互、形象的包装。这两个方面是密不可分的,在对制作完成后,我首先测试的就是社区网的整体风格和它的色调是否和谐,每一个类型的都有它特定的主题风格和色调,我的丰县社区网的整体设计风格和色调都是为了给人一种舒适的感觉,以蓝色调为主,其他颜色的搭配为辅,让社区网的用户登陆后,能够有一种轻松愉悦的感觉。在风格测试的最后,我要看每个页面上的排版风格、相应的字体颜色、字体大小、字体特效、文本排版风格、文本的颜色、以及表格属性、位置、行高行间距等等都要有统一的设置。让的整体都更加的和谐,具有一种舒心的感觉。5.2.2主页面的登录模块测试登录测试流程:〔1〕翻开系统首页,输入错误的登录信息〔2〕登录〔3〕输入正确的登录信息〔4〕登录〔5〕测试结果表5.1测试登记表模块数据预期实际是否合格登录模块用户名:test密码:null错误提示,密码不能为空错误提示,密码不能为空通过登录模块用户名:null密码:test错误提示,用户名不能为空错误提示,用户名不能为空通过登录模块用户名:m1密码:1错误提示,用户名不存在登录失败,错误提示用户名不存在通过5.2.3页面操作测试添加频道模块测试:〔1〕添加频道〔2〕不输入字符点击编辑完成〔3〕输入超长字符点击编辑完成〔4〕输入两个容一样字符串点击编辑完成表5.2测试登记表模块数据预期实际是否合格添加频道模块不输入字符串错误提示,频道名字不能为空错误提示,频道名字不能为空合格添加频道模块程序设计实现的过程中不可防止的会产生各种难错误提示,长度应该在14字符之〔中文长度2〕错误提示,长度应该在14字符之〔中文长度2〕合格添加频道模块用户用户错误提示,频道名不能重复错误提示,频道名不能重复合格添加栏目模块测试:添加栏目不填栏目名字不填关键字表5.3测试登记表模块数据预期实际是否合格添加栏目模块栏目:null关键字:1错误提示,栏目名字不能为空错误提示,栏目名字不能为空合格添加栏目模块栏目:1关键字:null错误提示,关键字不能为空错误提示,关键字不能为空合格第5.3节其他错误在程序实现的过程中很难是一次成功的,即便我们已经设计好程序也很难一次成功。在程序实现的过程中会无意中产生不可预料的错误,比方单词拼写错误,参数使用不统一,编码使用不统一,字符串类型不同。这些都可以导致程序运行错误,而却向那种拼写错误很难被发现,所以需要我们细心的检测和不断的调试才能解决。比方在api接口创立时因粗心错误导致运行导致所报错误。如图5.1所示:图5.1运行错误图5.1运行错误,仔细查看aja*请求数据接口和后台接口,发现后台接口存在拼写错误。解决方法:正确修改后台接口。程序运行语法错误如图5.2所示:图5.2运行错误图5.2运行错误,查看Python编码函数后,发现正确的编码方法。解决方法:添加正确编码格式。插入数据库时编码错误如图5.3所示:图5.3运行错误图图5.3运行错误,插入数据库编码和数据库编码不匹配,导致无确插入数据。解决方法:修改插入数据编码。插入数据库时sql语句错误如图5.4所示:图5.4sql语句错误图图5.4Sql语句错误,Sql语句拼写错误。解决方法:仔细查看sql语句,找到错误修改。程序引入文件时,发生错误如图5.5所示:图5.5程序错误图文件引入函数时并没有找到指定的函数名称。解决方法:查看自己想要引入的函数,确认后在检查文件中函数是否存在,并修改。结论本次毕业设计将我以前在书本上学习的知识完全的用到了具体的代码实现中去了,让我更深层次的重新认识了它们。同时更锻炼了实践动手操作能力。在这段日子里,我才真正的理解了“书到用时,方恨少〞这句话的含义,knowledgeispower。同时我翻阅了许多关于Pythonflask的数据,结合自己的经历,开发设计了这个基于互联网的手机舆情系统。虽然学校教师也经常带着我们做实际训练,不过在本次毕业设局实践中还是遇到了许多小问题,比方利用flask框架制作API过程中,无确解析aja*利用GET和POST请求数据json串,经过查阅了许多材料才发现解析request方式不正确。调试了程序许久才找到解析request的正确方式。之前总以为传值json串出了问题。这些虽然都是一些小的问题,但是由于自己的马虎在程序实践中浪费了大量的时间,以后还是要以实践为主要学习方式,多多积累经历才是。在系统开发过程中,我运用打了Pythonflask框架和自己平时学习掌握的一些技术,通过这些技术的实现,整个系统的性能都得到了大大的提高。在本次写作中,学习到了很多知识,我在这个过程中学习到了如何克制困难,如何进展自学,面对不动的问题怎么办,这些问题以前都是在普通的学习过程中没有接触到的,通过这次的经历,也让我懂得了知识的重要性。经过这几个月的努力,我学习和总结了完整工程的开发流程,对以后的进入社会参加工作都会是一笔财富。通过本次毕业设计,锻炼了自己的自学能力和独立分析问题并解决问题的能力,也在其中学到了许多之前在课堂上学习不到的东西,让我受益匪浅。通过实践也让我深刻的体会到了系统开发的艰辛和发现问题及问题解决后的欣喜,不过坚持下来了就是春天。培养了独立思考问题并解决问题的能力,同时也让我认识到,写论文是一个循序渐进的过程,从开场的模糊不清到最后的深刻理解,了解到了学习知识的重要性,之前书本上的知识,终于在这次实践中得到了印证,享受到了理论与实践相互结合的乐趣。更锻炼了独立完成工程的能力,每一次实践都是一次对我梦想的造就。在这次毕业论文撰写中,见证了同学互帮互助的友谊。我们一起讨论了相关专业知识,在讨论过程中收获到了许多一开场没有想到的知识点,和实现程序的想法。再次享受讨论过程给我们带来的认真负责的态度。附录代码片段1如图6.1所示:图6.1登录前端传值代码代码片段2如图6.2所示:图6.2登录数据库查询代码片段3如图6.3所示:图6.3添加频道关键代码代码片段4如图6.4所示:图6.4获取单个栏目关键代码代码片段5如图6.5所示:图6.5爬虫关键代码参考文献[1]易新.HTML与CSS入门经典[M].:工业.2012.56-78.[2]JoshuaBloch.JavaScript开发案例[M].:电子希望.2013.78-89.[3]简.MySQL性能调优与架构设计[M].:电子工业出版.2009.112-113.[4]王江伟.MySQL5权威指南[M].:人民邮电.2014.67-69.[5]RogerS.Pressman.软件工程实践者的研究方法[M].:机械工业出社.2011.56-60.[6]志学.MySQL数据库备份与恢复[M].:电子希望.2010.20-23.[7]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论