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

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

ID:31363451

大小:110.00 KB

页数:7页

时间:2019-01-09

一种基于python语言的网络爬虫研究_第1页
一种基于python语言的网络爬虫研究_第2页
一种基于python语言的网络爬虫研究_第3页
一种基于python语言的网络爬虫研究_第4页
一种基于python语言的网络爬虫研究_第5页
资源描述:

《一种基于python语言的网络爬虫研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一种基于python语言的网络爬虫研究  摘要:随着Internet技术的不断发展,互联网已经成为人们获取信息的主要途径,搜索引擎从互联网中靶向性筛选出有用信息,而网络爬虫又是搜索引擎的基础构件之一。本文实现了一个基于python语言的并行网络爬虫,利用关键字匹配技术对目标网站进行扫描,得到敏感数据并抓取,分析网站数据结构和受恶意攻击的风险系数。  关键词:搜索引擎网络爬虫python敏感数据  1引言  网络爬虫(Crawler)是搜索引擎(searchengineSE)的基本构件之一,其直接面向互联网底层,它是搜索引擎的数据发源地,决定着整个系统的内容是否丰富、信息能否得

2、到及时更新。它的性能表现直接影响整个搜索引擎的效果。网络爬虫的工作原理如下:从一个初始种子URLs出发,从中获取一个URL,下载网页,从网页中抽取所有的URLs,并将新的URLs添加到URLs队列中。然后,Crawler从队列中获取另一个URL。重复刚才的过程,直到Crawler达到某种停止标准为止。  搜索引擎以一定的策略在互联网中搜集、发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的目的。我们经常看到不同的网站发布着同样的新闻,很多就是通过网络爬虫的技术从其它的网站爬取信息,然后放在自己的网站发布。同样,这样的爬虫技术也可以用来帮助我们

3、做安全扫描分析等工作,这也是本文研究的重点。7  2国内外研究现状及相关核心技术  2.1现状  90年代出现了最早的搜索引擎,也就产生了网络爬虫。此时的爬虫在爬取整个网络的时候采取深度或广度优先的遍历方式。作为搜索引擎的信息资源采集的重要角色,网络爬虫的性能将直接影响整个搜索引擎索引网页的数量、质量和更新周期。于是出现后面的分布式网络爬虫。分布式网络爬虫可以看做是由多个集中式网络爬虫组合而成,分布式系统中的每个节点都可以看作一个集中式网络爬虫。分布式网络爬虫大大提高了爬取效率,目前分布式网络爬虫已近有了不少的应用,例如现在著名的Google和AltaVista搜索引擎所采用

4、的网络爬虫系统。  由于爬虫的重要性,Twisted使用python语言写了一个广受欢迎的爬虫事件驱动网络框架:scrapy,scrapy使用的是非堵塞的异步处理方式。scrapy能够爬取web页面,并从页面中提取结构化的数据。它可以用来数据挖掘、监测、和自动化测试。  scrapy流程图见图1。  2.2Python7  本系统用python脚本语言开发,python脚本语言与其它编程语言相比的优势在于它的语法简单、系统库强大、实现功能容易、高效率的高层数据结构、简单的面向对象编程、代码结构清晰易懂。如今python语言被广泛的应用于系统后台处理和web编程。由于pytho

5、n脚本语言有着这么多的优势,所以通过python脚本语言自己实现了一个爬虫、敏感文件扫描和日志分析程序。爬虫通过任务队列、线程池实现多线程并发爬取网页,在爬取了网页之后对网页进行解码分析,获取目录结构,对已知的目录结构进行敏感文件扫描。同时也通过脚本程序利用攻击规则库对用户请求的web日志进行安全分析,提取出日志中的sql注入攻击,xss跨站脚本攻击,可以利用这些方法发现网站的安全漏洞。  2.3并行爬虫技术  由于WEB网站群结构层次多,目录深度广,数据量很大,单进程的爬虫很难满足快速抓取大量数据的要求,因此本文爬虫进行了并行架构的扩展,实现了基于MPI的并行数据抓取功能。

6、本文并行爬虫主要采用主从模式,主节点负责维护整个爬虫的抓取队列以及任务分配工作,从节点负责对自己的任务列表按照第l章中的抓取规则进行数据抓取。每个从节点都需要维护两个队列,一个是任务队列,另一个是新用户队列。当从节点完成了其任务队列后会将自己的新用户队列交给主节点,由主节点来处理合并用户的工作,同时,主节点会将新的任务队列发送到从节点,由从节点继续抓取新数据。  3系统设计与试验分析  3.1系统功能模块  本系统主要分为三个模块。整个系统功能模块结构见图2。  3.1.1程序主模块和线程池模块  程序主模块的主要功能是web爬取。通过用户提供的初始URL开始爬取。7  线程

7、池决定着整个程序的执行效率,创建太多的线程,有些线程又有可能未被充分的利用,程序将会浪费一定的资源。销毁太多线程,将导致之后浪费时间再次创建它们。创建线程太慢,将会导致长时间的等待,性能变差。销毁线程太慢,将导致其它线程资源饥饿。所以在程序的开发中,线程池相当的重要,应做到合理有效的利用。  线程池模块主要是用来创建线程,加载爬虫模块中的爬取url任务到任务队列,每个线程从任务队列中获取任务并执行任务。  3.1.2敏感文件扫描模块  网站中的敏感文件是不应被普通用户查看的,通常这些敏感文件一旦被暴露出

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。