一种基于python语言的网络爬虫研究

来源 :科学与财富 | 被引量 : 0次 | 上传用户:lijia6685621
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着Internet技术的不断发展,互联网已经成为人们获取信息的主要途径,搜索引擎从互联网中靶向性筛选出有用信息,而网络爬虫又是搜索引擎的基础构件之一。本文实现了一个基于python语言的并行网络爬虫,利用关键字匹配技术对目标网站进行扫描,得到敏感数据并抓取,分析网站数据结构和受恶意攻击的风险系数。
  关键词:搜索引擎 网络爬虫 python 敏感数据
  1引言
  网络爬虫(Crawler)是搜索引擎(search engine SE)的基本构件之一,其直接面向互联网底层,它是搜索引擎的数据发源地,决定着整个系统的内容是否丰富、信息能否得到及时更新。它的性能表现直接影响整个搜索引擎的效果。网络爬虫的工作原理如下:从一个初始種子URLs出发,从中获取一个URL,下载网页,从网页中抽取所有的URLs,并将新的URLs添加到URLs队列中。然后,Crawler从队列中获取另一个URL。重复刚才的过程,直到Crawler达到某种停止标准为止。
  搜索引擎以一定的策略在互联网中搜集、发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的目的。我们经常看到不同的网站发布着同样的新闻,很多就是通过网络爬虫的技术从其它的网站爬取信息,然后放在自己的网站发布。同样,这样的爬虫技术也可以用来帮助我们做安全扫描分析等工作,这也是本文研究的重点。
  2国内外研究现状及相关核心技术
  2.1现状
  90年代出现了最早的搜索引擎,也就产生了网络爬虫。此时的爬虫在爬取整个网络的时候采取深度或广度优先的遍历方式。作为搜索引擎的信息资源采集的重要角色,网络爬虫的性能将直接影响整个搜索引擎索引网页的数量、质量和更新周期。于是出现后面的分布式网络爬虫。分布式网络爬虫可以看做是由多个集中式网络爬虫组合而成,分布式系统中的每个节点都可以看作一个集中式网络爬虫。分布式网络爬虫大大提高了爬取效率,目前分布式网络爬虫已近有了不少的应用,例如现在著名的Google和Alta Vista搜索引擎所采用的网络爬虫系统。
  由于爬虫的重要性,Twisted使用python语言写了一个广受欢迎的爬虫事件驱动网络框架:scrapy,scrapy使用的是非堵塞的异步处理方式。scrapy能够爬取web页面,并从页面中提取结构化的数据。它可以用来数据挖掘、监测、和自动化测试。
  scrapy流程图见图1。
  2.2 Python
  本系统用python脚本语言开发,python脚本语言与其它编程语言相比的优势在于它的语法简单、系统库强大、实现功能容易、高效率的高层数据结构、简单的面向对象编程、代码结构清晰易懂。如今python语言被广泛的应用于系统后台处理和web编程。由于python脚本语言有着这么多的优势,所以通过python脚本语言自己实现了一个爬虫、敏感文件扫描和日志分析程序。爬虫通过任务队列、线程池实现多线程并发爬取网页,在爬取了网页之后对网页进行解码分析,获取目录结构,对已知的目录结构进行敏感文件扫描。同时也通过脚本程序利用攻击规则库对用户请求的web日志进行安全分析,提取出日志中的sql注入攻击,xss跨站脚本攻击,可以利用这些方法发现网站的安全漏洞。
  2.3并行爬虫技术
  由于WEB网站群结构层次多,目录深度广,数据量很大,单进程的爬虫很难满足快速抓取大量数据的要求,因此本文爬虫进行了并行架构的扩展,实现了基于MPI的并行数据抓取功能。本文并行爬虫主要采用主从模式,主节点负责维护整个爬虫的抓取队列以及任务分配工作,从节点负责对自己的任务列表按照第l章中的抓取规则进行数据抓取。每个从节点都需要维护两个队列,一个是任务队列,另一个是新用户队列。当从节点完成了其任务队列后会将自己的新用户队列交给主节点,由主节点来处理合并用户的工作,同时,主节点会将新的任务队列发送到从节点,由从节点继续抓取新数据。
  3系统设计与试验分析
  3.1系统功能模块
  本系统主要分为三个模块。整个系统功能模块结构见图2。
  3.1.1程序主模块和线程池模块
  程序主模块的主要功能是web爬取。通过用户提供的初始URL开始爬取。
  线程池决定着整个程序的执行效率,创建太多的线程,有些线程又有可能未被充分的利用,程序将会浪费一定的资源。销毁太多线程,将导致之后浪费时间再次创建它们。创建线程太慢,将会导致长时间的等待,性能变差。销毁线程太慢,将导致其它线程资源饥饿。所以在程序的开发中,线程池相当的重要,应做到合理有效的利用。
  线程池模块主要是用来创建线程,加载爬虫模块中的爬取url任务到任务队列,每个线程从任务队列中获取任务并执行任务。
  3.1.2敏感文件扫描模块
  网站中的敏感文件是不应被普通用户查看的,通常这些敏感文件一旦被暴露出来则有可能泄露服务器的一些敏感信息,比如用户名、密码、源代码、服务器信息、配置信息等。还有一些敏感文件则可能是网站的后台管理员管理地址,一些已经公开有漏洞的编辑器。这些都能被攻击者所利用,进而对网站实施攻击,获得网站控制权。
  3.2试验分析
  用户通过爬虫的入口向程序提供需要爬取的目标,爬取的深度和使用多少个线程爬取,如果没有定义线程数,程序会初始化为9个线程爬取。程序将爬取得到的网页类容进行解码分析,提取出里面的URL,并将这些URL做一些处理后加入队列进行下一步爬取。目标爬取完毕之后会将结果保存下来,然后再调用敏感文件扫描模块对这些目录下进行敏感文件扫描,对于存在的敏感文件会将结果保存下来。
  3.2.1目标网页爬取
  在目标爬取的测试过程中,程序在获得一个目标站点后开始进行爬取。首先将这个目标url加入urlQueue队列中,在start函数中从urlQueue队列中获取第一个url,随后调用线程中addJob函数将url和工作work函数同时加入线程池任务队列中。此时线程从线程池任务队列中获取任务,也就是获取到的url和work函数,随后线程开始开始执行work函数,work函数中开始对url进行爬取,将url加入已爬取的任务队列readUrls中。爬取方法是调用requests模块中的get函数对目标进行网页抓取:   html=requests.get(url),此方法返回一个html对象。
  该对象中的content属性为网页内容:htmldata=html.content。
  接下来是对返回的网页内容进行解析分析,本程序采用的是python的第三方模块Beautiful Soup对其解析。Beautiful Soup 是用python 写的一个 HTML/XML 的解析器,它可以很好的处理不规范标记并生成剖析树。通常用来分析爬虫抓取到的web文档。对于不规则的 Html文档,也有很多的补全功能,节省了開发者的时间和精力。通过Beautiful Soup对htmldata解析:
  接着遍历allurl列表,如果列表中的链接没有在readUrls中,就将其加入urlQueue队列中。如此循环操作,直到最后达到爬取的深度停止任务,完成网页爬取。
  爬取结果如图3。
  3.2.2敏感文件扫描
  实现方法是通过python中requests类中get函数对url进行请求,通过http请求返回的状态码来识别url是否存在。
  图4是定义好的部分敏感文件信息。
  在利用获取到的网站目录结构进行敏感文件扫描,对黑名单中的文件进行一一扫描,能够将存在的敏感文件扫描出来,识别http状态码结果为200,该功能已经很好的实现。扫描结果如图5。
  结 语
  本文设计的并行网络爬虫通过将网页表单进行分类和检索提交,在这个爬虫的基础上实现一些安全分析的工作,最终可以发现并下载更多的网页内容和检测更多的网站数据漏洞。实验结果表明,和普通的网络爬虫相比,并行爬虫产生的索引文件更大,可以检索到更多的结果。其主要有以下几个特点:
  1)使用方便。使用者只需提供相似关键字,就能利用一般爬虫抓取网站中的相关数据。
  2)支持关键字匹配。使用者只需自定义感兴趣的关键字爬虫就能自动匹配相关内容并将符合条件的网站内容和目录保存到磁盘之上。
  3)支持并行爬虫。对于需要集群式的网站数据,同时又需要快速获取数据的用户而言使用其并行功能,可以达到令人满意的效果。
  然而,由于并行爬虫需要提取网页中的表单并进行分类、提交以及页面缓存和状态保持,这些都需要更多的时间和系统资源。因此,如何尽量减少额外的系统资源消耗以适合大规模爬行需要进行进一步的研究。另外,虽然并行爬虫发现了更多的网页,但是它并没有发现所有的深度网页,这是由于其所依据的决策树无法正确地对某些表单进行分类。而决策树的准确性取决于训练实例的特点和决策树生成算法,所以,选择更合理的训练样本和更合适的决策树生成算法应该是可行的。
  参考文献:
  [1]WELCH M J,SCHONFELD U,HE D,et al.Topical semantics of twitter links【C】//Proceedings of the Fourth ACM International Conference 0n Web Search and Data Mining. New York: ACM Press.2011:327—336.
  [2] Sismanis Y,Deligiannakis A.Dwarf K Y.Shrinking the petacube[A].Proc ACM SIGMOD[C],Madison.Wisomin.2002 464—475
  [3] ChunWJ, 吉广. Python 核心编程[M].人民邮电出版社, 2008.
  [4]Boldi P,Codenotti B.Santini M.UbiCrawler:A Scalable Fully Distributed Web Crawler[J].Software:Practice&Experience。2004,34:711-726
  [5]Lee Hsin-Tsang,Leonard D.IRLbot:Scaling to 6 BillionPages and Beyond[A]//Proceedings of the 17th International World Wide Web Conference[C].ACM Press,2008:427—436
  [6] 李勇, 韩亮. 主题搜索引擎中网络爬虫的搜索策略研究[J].计算机工程与科学, 2008, 30(3): 4-6.
  [7] 张红云, 刘炜, 熊前兴. 一种基于语义本体的网络爬虫模型[J].计算机应用与软件,2009, 26(11): 101-104.
  [8] 刘世涛. 简析搜索引擎中网络爬虫的搜索策略[J]. 阜阳师范学院学报: 自然科学版, 2006,23(3):59-62.
其他文献
摘要:想要提高造价的控制水平,以合理的成本使效益最大化,必须从设计阶段开始控制管理,并且要将设计概算和其依据考虑在内,使资源配置得到优化,并且能使资源以及人力的操纵效率有所提高,也能高效管理整个建筑给水排水工程建设。  关键词:给排水;安装造价;控制要点  1给排水工程造价出现的问题  1.1工程设计阶段出现问题  在工程开始设计的阶段,工程建议书是由建筑单位直接给出,再由公司项目部门进行审核投资
期刊
摘要:全面预算管理在本质上来说指的是一种可以对本行业进行驾驭的特殊技术、策略性质的工具以及系统的管理体系。全面预算管理通常是以一个企业的目标、利润为重要主线,以实现自身企业在目标方面的利润为主要目的,进而促使整个企业的预算管理活动不断的围绕目标利润这个方面而展开活动。  关键词:建筑工程;成本控制;全面预算;管理  全面预算管理在本质上来说指的是一种可以对本行业进行驾驭的特殊技术、策略性质的工具以
期刊
摘要:随着我国改革发展的进行,行政事业单位会计的风险防范也逐渐受到重视。行政事业单位在会计的记账和审核等方面存在着许多问题,因此我们应该加强对行政事业单位财务管理和会计的风险防范的监管。本文深入研究行政事业单位会计工作中的问题,并根据目前的经济发展状况提出相应的解决方法。  关键词:行政事业单位;风险防范;控制  前言:行政事业单位是行政单位和事业单位的统称,具有行政管理职能的事业单位,其履行的是
期刊
摘要:本文基于广义多载波系统,通过于符号间及子载波间干扰接收信号进行研究,在频域上将闭合表达式予以给出,选择3种型号不同的滤波器,就其频域结果进行比较分析。最终结果显示,GMC调制解调滤波器组在具体的压制干扰方面性能,则会受限于原型滤波器类型及滤波器延时。  关键词:广义多载波系统;调制调解滤波器组;干扰频域  1.GMC信号模型及干扰分析  设定M为子带数量,而与发送端相应第k子带,将YK信号(
期刊
摘 要:当前,高校毕业生就业工作面临极大压力,如何调动各方面积极因素参与就业工作,是各高校不断思考和探索的问题。本文从与就业创业工作相关的学生社团组织建设的角度出发,对学生社团组织有效推动高校毕业生就业创业工作进行探索。  关键词:高校 就业工作 学生社团组织 职业发展  当前,高校毕业生就业工作面临极大压力,如何调动各方面积极因素参与就业工作,是各高校不断思考和探索的问题。各高校就业相关的社团组
期刊
摘要:据调查,佛山市高明区共有乡土用材树种56科81属133种,其中裸子植物5科5属5种;被子植物51科76属128种。文中按其比重、主要用途及商品价格进行了分类。  关键词:乡土用材树种;调查;佛山市高明区  佛山市高明区地理环境优越,植物种类繁多,其中包括许多珍贵树种。为了摸清佛山市高明区的乡土用材树种资源,为了给高明区打造可持续发展的生态系统建设提供科学参考,佛山市高明区林业科学研究所技术人
期刊
摘要:水温过高对190系列柴油机不利影响显著,因此及时分析原因,有的放矢的排除故障,对柴油机正常使用至关重要。常规做法按照柴油机各系统逐一分析判断,比较零乱繁琐,本文以热量生转角度,从散热、传热、制热三个方面分层次进行分析判断,得出的结论对于实践工作中具有一定的指导作用。同时通过对维修后的柴油机出现拉缸故障的分析,进一步阐述了柴油机出现拉缸的现象和各种原因,为现场操作人员及时处理此类故障提供指导,
期刊
摘要:矿区在已知大茧厂沟铅锌矿床和双庙沟铅锌矿床的西部,地质环境极为相似,同在太平哨断裂带内,围岩均为盖县组矽线黑云片麻岩、片岩,矿体受NE向断裂控制。  关键词:铅锌矿;断裂;成矿地质条件分析  1 区域地质特征  矿区大地构造位置处于中朝准地台,胶辽台隆,营口-宽甸台拱,凤城凸起的东部。  区内出露地层有下元古界、上元古界、中生界及新生界。以下元古界辽河群地层为主,由下而上为 :里尔峪组、高家
期刊
摘要:秘书素质对企业发展有重要的影响。优秀的企业秘书应具有优良的思想品德,诸如:忠于职守,工作认真;态度积极,求真务实;与人为善,团结同事;谦虚谨慎,平等待人。另外还应具有扎实的业务素质,包括认识事物、语言文字运用、组织协调、熟练运用现代化办公设备。秘书自身需要积极学习,加强实践经验,同时企业也需要加强监管,进一步提高秘书素质。  关键词:秘书;企业;培养;环境;实践  秘书人员肩负多种工作任务,
期刊
农村综合文化站是乡镇人民政府设立的公益性文化机构,工作职能是社会服务,指导基层和协助管理农村文化市场。主要任务是开展文艺演出活动、时政法制科普教育、书报刊借阅、数字文化信息服务、公共文化资源配送、体育健身等,简单的说就是“宣传、组织、辅导、提高”,文化站的性质和职能决定了他存在的必要性和重要性。但是,农村综合文化站的现状,就是走的一条不平凡的兴衰之路,即使党中央把文化工作重视到现在的程度,我們从事
期刊