基于增量式爬虫的搜索引擎系统的设计_第1页
基于增量式爬虫的搜索引擎系统的设计_第2页
基于增量式爬虫的搜索引擎系统的设计_第3页
基于增量式爬虫的搜索引擎系统的设计_第4页
基于增量式爬虫的搜索引擎系统的设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

基于增量式爬虫的搜索引擎系统的设计与实现摘要随着社会的不断发展,信息增长的也越来越快,大量的数据涌现在我们面前,对于这些数据,我们对信息的查找和提取也会更加困难。如何更快速、更精准的找到我们所需要的信息,获取到有用的信息成为了很重要的一个技术。与传统的搜索引擎对比,本次开发的搜索引擎具有针对性,更新频率快,可以实时的对数据进行爬取,使用户每次获取到的数据都是最新的。本次课题在Windows平台下基于Python中的Scrapy框架对网络数据进行爬取,将获取到的数据进行本地保存以及Redis的分布式保存。通过当下最流行的搜索引擎elasticsearch进行索引与数据进行连接,然后通过Django框架快速搭建搜索网站,讲解如何完成Django与elasticsearch的搜索查询交互,最后通过Scrapyd完成对Scrapy的线上部署。使用户可以针对性的对信息进行搜索与查询。通过一系列的实验验证,获取到的数据都很好的存储在了本地以及Redis,证明了增量式爬虫在传统搜索引擎上的优点以及优势。关键词:Scrapy、搜索引擎、增量式、Django框架、爬虫DesignandImplementationofSearchEngineSystemBasedonIncrementalCrawlerABSTRACTWiththecontinuousdevelopmentofsociety,informationisgrowingfasterandfaster,andalargeamountofdataappearsinfrontofus.Forthesedata,wewillfinditmoredifficulttofindandextractinformation.Howtofindtheinformationweneedfasterandmoreaccuratelyandobtainusefulinformationhasbecomeanimportanttechnology.Comparedwithtraditionalsearchengines,thesearchenginedevelopedthistimeistargetedandupdatedfrequently.Itcancrawldatainrealtime,sothatthedataobtainedbyuserseverytimeisthelatest.ThistopiccrawlsnetworkdatabasedontheScrapyframeworkinPythonundertheWindowsplatform,andsavestheobtaineddatalocallyandRedisdistributedpreservation.Throughthemostpopularsearchengineelasticsearchforindexinganddataconnection,thenquicklybuildasearchwebsitethroughtheDjangoframework,explainhowtocompletethesearchqueryinteractionbetweenDjangoandelasticsearch,andfinallycompleteonlinedeploymentofScrapythroughScrapyd.Userscansearchandqueryinformationinatargetedmanner.Throughaseriesofexperimentalverifications,thedataobtainediswellstoredlocallyandinRedis,provingtheadvantagesandadvantagesofincrementalcrawlersintraditionalsearchengines.Keywords:Scrapy,searchengine,incremental,Djangoframework,crawler目录1绪论 绪论1.1搜索引擎的背景随着时代的发展,人工智能时代的来临,数据也变得越来越多,数据随着互联网越来越丰富,人们对于数据的处理也到达了一个新的层次,由于数据无处不在,从各方面来到我们的身边。在我们身边,数据不仅可以从电脑、电视、手表、甚至家电都可以涵盖各种各样的数据,而纸质版的报纸等传统的媒体也已经逐渐转向互联网。互联局飞速发展的时代,可以说是信息的时代,其中一大特点就是数据量大,信息资源丰富且各种各样。而如何利用好这些数据,让数据更好的为人们服务也成为了一个新的问题。在目前来看,基于数据来做的事情也越来越多,例如:数据分析服务、互联网金融、数据建模、信息聚类、自然语言处理、医疗病例分析等等。这些系统所需要的数据几乎都是由我们通过爬虫获取并进行规范化完成的。随着大数据时代的来临,搜索引擎成为了解决这一问题很好的方法,在获取数据之后,将数据进行一系列的处理,利用特定的策略,把数据存储到我们的服务器,再给用户一个简单友好的界面,通过这个界面,用户只需要在查找栏里面搜索自己向医药获取的数据的关键字,并点击搜素,就可以获得一系列的有关信息的列表。经过了这几年的发展,搜索引擎也成为了互联网重要的一部分,用搜索引擎来解决我们的需求。随着计算机的崛起,一系列有关计算机技术和招聘的内容也成为了当今时代的热门,如何能够快速有效的找到自已相关感兴趣的技术与文章,为了更好的提高学生们与求职者们的需求,在爆炸性中的信息互联网里面,怎么找到好的文章和求职信息就是最关键的一步,这个搜索引擎主要是面向校园学生老师搜寻资料以及对计算机感兴趣的人群。使用Scrapy框架打造一个可以分布式的爬虫,再通过elasticsearch和Django打造一个简易高效的搜索引擎网站。1.2搜索引擎的目的及意义由于搜索引擎对人们来说的重要性不可言语,现在有各种各样的搜索引擎,提供者多样化和个性化的服务,之前我们都是通过谷歌这种公司的API接口进行搜索,用户无法控制搜索数量和频率。目前也有许多强大的搜索引擎,和早期相比,现在的搜索引擎都有了很大的改进,不少搜索引擎在主界面上做了修改,而有些搜索引擎则是在搜索方式上进行了提升,本次研究不同于以往,以往的大多数都是基于Java技术,本次通过Python中的Scrapy框架获取针对型的数据,并以自己的风格和针对性的开发做搜索引擎,在实现搜索引擎的方法上,进行了进一步的提升,让对计算机技术这一方面的人群进行更好的关键搜索结果,是人群获得自己想要的数据进行便利,本次研究的原型是从0到1开发,在最终测试的结果上效果都是不错的,在此基础上可以对搜索引擎进行进一步的完善和提升,使本次研究可以让更多人受众人群获益,一定程度的减少因为搜索结果导致自身没法真正会去到数据的案例。并且本次使用Python也更好的进行发扬作用,Python中对数据的处理和友好性也导致了以后的方向,在数据处理等方面也有更好的表现力。1.3国内外搜索引擎发展现状在1990年之前,互联网里面的数据人们都搜索不了。不过,在1990年Arichie出现利用文件名索引互联网中的网站程序文件,也是第一次实现了搜索,不过这种功能效率极低,还不能算真正意义上的搜索引擎。直到1995年,搜索引擎才是真正的出现在发展至今也有25年了。因为在这25年里,互联网也是完全的发展起来,由于网站的发布和成本不断下降,在网络上共享资源的信息也不段增加,当时互联网上面的Web站点数量早已经超过了150万,信息飞速膨胀,远远超出人们当时手动查阅的范围,所以1995年成为了搜索引擎的一个重要的起点,用户急需一个工具来进行快速、精准的搜索自己想要的数据。在这一年里出现了很多搜索引擎,Excite、FastSearch、AltaVista、InfoSeek等许多非常著名的搜索引擎都是始于1995年。其中也有著名的,从1995年开始快速发展并迅速成为当时著名的搜索引擎,至今任然是全球访问量第五的网站。1995-1998又是互联网飞快发展的时间,信息爆炸式的增长开始满足不了用户的需求。Google腾空出世,利用PageRank连接分析等技术大大提高了搜索效率和质量,并且快速抢占了各国的搜索引擎市场,成为了目前最强大的搜索引擎。1998年,Google不仅实现里搜索引擎,而且还在动态摘要、网页快照、DailyRefresh、地图股票词典等多样的方式集成搜索、并且支持多语言、界面革新,永久的改变了搜索引擎的格局。1.3.1搜索引擎发展阶段搜索引擎发展主要分为四阶段:第一个阶段:分类目录阶段在这个阶段,由于是搜索引擎刚起步的阶段,也是互联网的网页开始多的阶段,在这个阶段,人们只能手工的对网页进行分类,用户通过多种方式寻找网站,由于是纯手工的方式,也没有特别巧妙的技术,所以很快就被取代了。在这个阶段,具有代表性的搜索引擎有yahoo和国内的hao123为主,其优点也是很明显的,因为是人工挑选,所以网站的质量也会比较高。不过很快就进入了第二个阶段。第二个阶段:文本检索阶段文本检索阶段也就是利用关键字进行检索,上一代的搜索引擎的人工形式无法满足需求,由于信息开始增多,用户们的需求也增多。于是搜索引擎开始进入了爬虫的时代,主动去获取网页的信息和内容。在这个时期,网络技术的发展,用户们开始希望对内容进行查找,其采用了经典的信息检索模型来计算用户所需要的查询的语句和网页,在这个阶段Google是最为成功的,它建立在网页链接分析技术的基础上,使用文字检索进行搜索。其中还有效果较好的是概率模型和向量空间模型。一些早起的搜索引擎Excite、AltaVista都是采用这个模式。不过这种方式也是有一定的弊端,有不少人员会利用这样的缺陷去增加收录,比如关键词堆砌。这样网站可以很快的被搜在最前面第三个阶段:整合分析阶段随着网络信息的迅速膨胀,为了能够更好的解决用户们对网页信息的搜寻和查找,搜索引擎出现了一种以反链为和兴的算法,网页之间利用连接的关系被搜索引擎链接起来,反链越多,说明网站越多人访问越多人关注,这样网站的评分也会越来越高。不光如此,这个阶段的搜索引擎也就是网页链接代表被深入挖掘并且利用。这是一种相当于推荐关系,假设有一个A网站,在同一阶段,很多网站都指向A,那么A网站相当于被很多网页推荐,说明A网站是具有知名度。这种连接分析也深入人心,改进搜索结果,影响至今。所以这种基于连接的吻戏,对很多网站来说都是一个考量,因为只有被很多网站所指向成为一种链式结构的时候,发布者的网站才有可能得到更多的推荐,才会变得流行容易被检索到。基于这种逻辑,如何才能找到真正重要的网页呢,通过分析连接的指向。在这个时候出现了我们熟知的PR值(PageRank),PageRank算法是由Google提出的,这引发了学术界不小的轰动。起初这个算法的优势非常明显,不少学者都提出了很多基于这个算法的改进。但是一直到目前为止还是有很多的人对算法进行钻漏洞,进行购买链接的等等。虽然目前为止还是用很多商业用的搜索引擎在采取这个算法的链接技术,但是也有不少刚刚提到的弊端购买链接、搜索引擎不人性化的需求,没有考虑到不同的用户输入相同的语句时,会有不同的结果。这样查询结果的质量也会降低,这给出现了相当大的困扰和意见,对于用户来说。因此,第四阶段的出现也是必然的。第四个阶段:用户中心阶段随着搜索引擎的发展和演变,搜索引擎现代化而且智能化,搜索引擎通过记录大量用户的行为数据(跳出率、点击率等),大多数都演变成了以用户为核心,由于搜索引擎开始了对用户行为的分析,也是就通过用户对网页的操作,行为数据等等,产生不同的权重比。举个例子:一个用户通过搜索一个关键词查看了一个网页,停留了很长一段时间并且在同一个事物进行多次的点击,并且反复的进出页面。那么搜索引擎就会认为这个页面对于用户来说可能是需求,从而在后面几次的搜索中,使这个关键词的搜索得分排名增加靠前。1.4本文主要研究内容本次课题的研究主要工作是对数据的获取和总结分析,大部分的实现代码都是通过scrapy框架实现的,从0-1实现了对三大网站的数据的获取,和百度、google等大型搜索引擎对比,本次研究更具有针对性,在获取数据之后通过异步存储和同步存储分别保存。将数据进行格式化的处理,然后通过简单的django搭建一个前端界面,通过elasticsearch使前端和后端数据联系起来。根据上述所描述的问题,本次研究主要的工作安排如下:1.在之前由于急于Java搭建的爬虫框架不理想,且代码量大,不好维护,这次我们通过Python—scrapy的框架进行研究,scrapy是一个适用于Python的快速开发的网络爬虫抓取框架,兵器代码量少,易于修改和维护,提供了多种类型的爬虫,入Crawlspider、spider等,实现了一个搜索引擎系统原型2.通过Scrapy框架应用到系统过程中,可以选择性的使用深度优先或者广度优先来抓取网站的url,在针对大型的网站也有不错的一种效果,并且通过scrapy框架中知道的URL去重模块,在抓取网站的时候可以很好的过滤掉一些没用的URL,且可以进行异步解析网址,在针对爬取数据的时候,由于爬虫容易被禁止的问题,提出了线程池和ip代理的有效解决方案。3.通过redis数据库的搭建,作为一个nosql数据存储,它的特点就是快,并且很大程度解决了存储不足的问题,在操作上增删改查等功能也可以很好的实现。redis分布式爬虫,可以充分利用多台服务器提高爬虫的效率的速度,集成bloomfilter。同样,redis是一个高性能的key-value数据库,Redis不仅支持主从同步。数据可以分布在各个服务器上,从主服务器向任意数量的从服务器上同步,从服务器也可以关联其他主服务器。4.通过elasticsearch提供的Api接口,搭建搜索引擎,用于云计算中,能够方便快捷的安装和使用。作为一个良好的搜索引擎,能有高扩展、高实时、分布式的搜索与数据分析,也能够很好的储存数据。也同样支持实时GET请求,适合nosql数据存储。5.通过django搭建一个简单的搜索引擎后台,并且使他与elasticsearch进行查询交互已实现我们最后的搜索引擎。1.5本文结构安排本文主要分为七个章节进行讨论,第一章为绪论,主要介绍搜索引擎的背景、目的及意义和搜索引擎的发展现状。大概的介绍一下本文的主要研究内容,为后面设计的时候做铺垫,有更清晰的思路。在初步了解了搜索引擎之后,对于搜索引擎的技术以及网络爬虫的技术进行介绍,网络爬虫的相关技术主要有深度优先、广度优先和网页链接去重等。所以,第二章则是在技术相关的知识点进行介绍。第三到五章作为本次课题研究的重点,主要从scrapy的应用和实例,从头到尾的进行分析。第六章是对系统的测试,对于三到五章节的搜索引擎设计的功能进行测试与分析。第七章则是对于本次研究的总结以及对未来的期望。2搜索引擎相关技术介绍2.1搜索引擎技术搜索引擎是一种可以帮助用户搜索他们想要的内容的计算机程序,也就是说,搜索一七年前是把数据和计算机的处理和用户所需要的信息做匹配,并把匹配结果展示出来。怎样才能搭建一个好的搜索引擎。有以下三个关键问题需要考虑:1.如何保持高效的爬取网页2.怎么样能够建立好的有效的索引3.如何判定搜索结果的先后顺序,以及你查询的关键字对应的网页的相关性。想要搭建一个好的搜索引擎,优秀的算法和框架是必不可少的两个前提,因为对于搜索的数据和爬取的网页中,做到尽可能多的数据获取和存储才是检验一个搜索引擎是否优秀的标准。如何选取搜索引擎的方法,和一些关键的额技术可以让搜索引擎更加高效,接下来本章为后面的章节和实现搜索引擎系统做介绍。搜索引擎为了解决人们快速获取信息的一个重要的方式。搜索引擎的工作原理也很好理解,总结来说就是抓取网页、处理网页、提供检索服务。每一个搜索引擎都有自己的网页抓取程序,也就是spider。spider可以通过网络爬虫技术抓取网络上的各种相关的网页;再获取到网页之后,需要做大量的预处理工作,对数据进行处理检错去重等,才可以提供检索服务。其中包括一些重点技术、分词、提取关键字、建立检索服务等,还包括网页去重、分析url,关几次权重比等等。在这次的课题里面,都会很好的研究关于搜索引擎的一些相关知识,幸运的是搜索引擎发展到现在这个阶段,人们已经开发了很多相关的库,可以轻松的调用搜索引擎的索引服务。最后在用户输入关键词进行搜索,搜索引擎就会从之前建立的索引数据库中找到想要的匹配关键词的网页提供给用户。参考下图2-1图2-1搜索引擎工作流程2.1.1搜索引擎的索引怎么理解搜索引擎中的索引呢?对于为什么搜索引擎可以这么快,索引是最重要的一点,接下来介绍一下索引的相关知识。在介绍索引之前,我们先介绍一下生活中的数据类型,结构化数据和非结构化数据。结构化数据就相当于是对mysql之类的数据库,每一个值都有对应的关系,我们可以通过键值对的方式很快的获取到自己的信息;非结构化数据就相当于nosql对于这类数据,它并没有严格的格式,其内容包括图像、文本等等。那么,如何从非结构化数据提取重要的信息然后再组织成新的信息,就是索引。索引存在两种:正向索引和倒排索引。正向索引从头到尾遍历,将匹配到的索引值进行累加,如下图2-2图2-2正向索引这种方式非常耗费资源。所以我们一般采用倒排索引,倒排索引只会对每一个文件进行查找,找到文件中对应的值就标注出现位置和文件信息,这样索引结构就可以直接应用于搜索排名了。比如,用户搜索关键词1,那么搜索引擎就会把包含关键词1的文件调出,进行相关度和权重计算。这样大大加快了排名的速度。如下图2-3图2-3倒排索引2.2网络爬虫相关技术网络诞生的第一个爬虫是在1993年,它的名字叫做“互联网漫游者”,在一些网站中也叫他网络机器人或者网络爬虫。开发它的作者是来自美国麻省理工学院的学生马修。互联网就像是一张巨大的蜘蛛网,也可以说是数据结构中的图来表示,网络爬虫也是通过图论的算法来遍历互联网的信息获取其中的数据。互联网就相当于一张大网,每一个网页就是这个大网中的一个点,通过这些点(url连接)就可以访问到每一个网站,网站与网站直接又通过互联网连接起来。网络爬虫就是从其中一个点出发,按照给定的规则遍历网中所需要的点(网页)。遇到合适的需求的网页就下载下来并处理。网站上面的资源都存储在不同的服务器上面,不管是哪一个搜索引擎想要获取用户的搜索,首先要把网页存储在本地服务器,通过爬虫获取到的数据。爬虫可以不断向网站发出请求并把所得到的内容拷贝起来,因为之前所提到过的反链技术,通常来说都是通过一个网页到另一个网页的发送和请求,然后不断的重复这个过程。不过在这之中也有很多细节要考虑,比如网页的死循环连接,还有当网页中的内容不发打开时,或者打开错误超时的时候。其次,如何高速多并发的爬取数据也是一个很大的挑战,当有成千上完个数据同时进行保存和爬取,如何做到互不干扰,在同步的情况下可以很好的实现,不过效率又低,所以需要用到异步保存提取等等,这样爬虫也是一个很大的工程。相比百度谷歌这样的搜索引擎,本次研究的课题负担要小很多,只是针对计算机学术的海量数据进行抓取,并且有针对性的对url进行去重和处理。不过即使是这样的数据量,想要做到高效快速并符合用户的需求,也需要涉及到很多技术。本章将会呈现几种抓取略,为之后实现爬虫住区提供帮助。2.2.1深度优先深度优先也经常被描述为“一条路走到黑”,这个算法比较好理解,从字面上来看,深度就是在访问第一个节点的时候,访问他所有的子节点直到最里层的子节点被遍历之后,然后访问与之相邻的结点,然后重复循环。深度优先可以确保每一个结点都只走一次,但是也有缺陷,当一个分支过深的时候,就会出现问题。由于广度优先的策略会消耗大量的内存,所有在不同的情况需要采取不同的策略,深度优先则是很好的解决消耗内存的另一个策略。因为每次搜索的过程中,只需要维护这一个节点,不过却无法知道这条路径是否是最短的路径,一条路走到黑导致这个策略的无法全面会用。不管是深度优先还是广度优先都能遍历所有的节点,所以找到合适自己的方法,才是本章的重点。在不同类型的网页中,网页结构也不一样,侧重点也不一样。2.2.2广度优先广度优先又称宽度优先,与深度优先想法。可以通过以下图片来初步理解。这个策略不仅在网络爬虫上面可以用,它存在很久并且在各个领域上都广泛的运用。从表面来看广度优先只是普通的将下载的网页帮韩连接的直接获取到url放到队列的末尾。但是在实际应用的过程中可以体现出这个算法的效果。有不少报告都提出,这个策略是很好的,虽然看着算法很普通,但是在抓取网页的时候确实按照网站的url网页来排序的。在广度哦优先的条件下,如果一个网页有很深的网页,那么这个网页也是不容易被用户所看到到,而在最外层的网页里面,也就是第一层的域名下,如果他的兄弟网页有很多的话,那么也能更优先的获取到这些网页的内容。广度优先的搜索可以从数据结构中的树来体现。比如一个节点中有n个相邻的结点,在第一个节点获取的时候,先将第一个节点放进去,然后再将相邻的n个节点也放进去,在进行下一轮的搜索中,如果下一轮的树节点也到了n,那么这个时候队列的内存消耗空间就会非常大。所以,广度优先也有缺点,就是在输的层次比较深自己点较多的情况下,内存就会占得比较多。2.2.3网页链接去重网页链接去重,什么是网页链接去重呢?为什么要进行网页链接去重呢?在网络爬虫进行的时候,我们通常会将网页上所有互相有关联的url链接给提取出来作分析,然后在进行下载处理网页数据,不过偶,在互联网上包含着大量重复的信息2.3网络爬虫分类网络爬虫大致分为几大类:通用型、聚焦型、增量式、深度式。其中通用爬虫又称为全网爬虫,通过一个或者多个url扩展到整个web。主要对应的是大型的web采集数据和通用的搜索引擎,这一类引擎很少讲自己的代码公布出来。由于爬取的数量很大,对于速度和存储空间要求比较高,对于爬取顺序和内容没什么要求。由于网页较多,所以刷新的频率比较低。虽然如此,作为通用性的搜索引擎,也具有较强的参考价值聚焦爬虫是对于提前设置好的相关结构选择性的爬取自己有兴趣相关的web,这种爬虫和通用爬虫对比,聚焦型只需要对符合相关规定的页面进行获取,节省了网络和硬件的使用,保存的页面比较少更新快,主要针对一些特定的用户提供服务。爬行策略有四种、基于内容评价、基于增强学习、基于链接评价、基于语境图增量爬虫比较好理解,对于某些新闻网站或者资讯网站,里面发布的内容都是每天在增加。对于这种或者这类网站的爬取可以采用增量式爬虫。增量爬虫主要实在原本的内容上面进行更新,未改变的内容不变,只获取到网站内产生的新页面。一定程度上能保证所爬取的压面都是新的。深度爬虫对网站爬取可以分为表层网页和深层网页,对于表层网页是不需要提交表单,使用静态url就能到达的网页。深层网页隐藏在表单后面,需要提交关键词才能获取,不能直接访问。2.4本章小结本章对于搜索引擎和网络爬虫相关技术进行了介绍,首先对于搜索引擎的工作原理进行介绍,其次介绍了搜索引擎中最重要的技术—索引。通过搜索引擎的介绍,对于之后实现搜索引擎更好的理解和铺垫。之后介绍了网络爬虫相关技术,通过本章的介绍,我们初步了解了网络爬虫的原理,和之后要用到的相关技术。3基于增量式爬虫的搜索引擎系统实现有了第三章的基础,我们初步理解了scrapy的整体框架结构,以及如何利用这个框架去开发一个功能完整的爬虫,并通过了源码分析每个模块的具体作用。本章将不再过多解释scrapy中的应用,接下来通过代码的演示和一些重难点技术进行讲解。3.1Scrapy爬虫的搜索引擎系统的分析与设计3.1.1虚拟环境的安装为了方便的解决不同项目所依赖库的不同,本次课题将在虚拟环境下开发,为了解决 Python解释器中包的混乱和版本的内容,为每一个程序独立创建一个虚拟环境。直接运行pipinstallvirtualenv,如下图3-1:图3-1虚拟环境的安装3.1.2Scrapy的介绍与配置scrapy是python开发的快速、高层次的网站抓取框架。用于抓取网络,并从网络中提取结构化的数据。scrapy最重要的特性是其本身高并发,底层使用的是异步的IO框架,也就是我们使用的twist,时间循环和回调模式。scrapy的安装也很简单,之前介绍了虚拟环境的安装,只需要在虚拟环境下,通过命令:pipinstallscrapy即可安装我们的scrapy框架。如何在scrapy下新建一个pycharm项目:通过scrapystartprojectArticleSpider创建一个新的项目,如下图,为创建项目的初始界面,接下来分别介绍一些这些文件:图3-2目录为了让代码的分离性比较好,易于维护,scrapy有个很重要的结构就是数据的传递和保存都是可以分开维护在spider里面则是存储我们具体的爬虫代码;item作为scrapy里面一个重要的类,专门用来解决数据传递问题。主要为了解决数据在各种pipeline之间,我们可以把item理解为dict的增强版本。在item里面集成了一个dictitem,里面具有我们常使用的dict的用法。作为一个容器,可以包含爬取的数据类型,如:url、内容、时间等等。代码如下:classJobBoleArticleItem(scrapy.Item):

title=scrapy.Field()

create_date=scrapy.Field(

input_processor=MapCompose(date_convert)

)

url=scrapy.Field()

url_object_id=scrapy.Field()

front_image_url=scrapy.Field(

#input_processor=MapCompose(add_author,add_test),#测试用

output_processor=Identity()

)

front_image_path=scrapy.Field()pipeline是专门用来做数据保存的,用于数据清洗和数据处理,代码如下:classMysqlTwistedPipline(object):

#采用异步方式导入mysql

def__init__(self,dbpool):

self.dbpool=dbpool

@classmethod

deffrom_settings(cls,settings):

dbparms=dict(

host=settings["MYSQL_HOST"],

db=settings["MYSQL_DBNAME"],

user=settings["MYSQL_USER"],

passwd=settings["MYSQL_PASSWORD"],

charset='utf8',

cursorclass=MySQLdb.cursors.DictCursor,

use_unicode=True,

)

dbpool=adbapi.ConnectionPool("MySQLdb",**dbparms)

returncls(dbpool)

defprocess_item(self,item,spider):

#使用twisted将mysql插入变成异步执行

query=self.dbpool.runInteraction(self.do_insert,item)

query.addErrback(self.handle_error,item,spider)#处理异常

returnitemsettings是项目的设置文件,可以对项目进行初始化设置,爬取延迟时间等middleware是设置中间件的地方,在访问网站的时候,可以设置随机更换ua和代理ip等等操作。代码如下:classRandomUserAgentMiddlware(object):

#随机更换user-agent

def__init__(self,crawler):

super(RandomUserAgentMiddlware,self).__init__()

self.ua=UserAgent()

self.ua_type=crawler.settings.get("RANDOM_UA_TYPE","random")

@classmethod

deffrom_crawler(cls,crawler):

returncls(crawler)我们通过下图来更加详细的介绍一下scrapy的运行过程,通过下图3-2我们来一一分析一下scrapy的使用。图3-3scrapy架构图①当我们输写了一个网站spider,然后我们会通过yield一个requests,requests发送给我们的engine。②engine什么都不做,直接传到scheduler(调度器)。③schedul(调度器)会生成一个requests交给engine④engine拿到之后,通过downloadermiddleware一层一层的过滤,讲数据发送⑤downloader下载完成之后downloadermiddleware将数据下载,返回一个response⑥engine拿到response之后,返回给spider,然后执行我们在里面编写的处理逻辑,解析item⑦当解析出item之后,传递到itempipeline,如果还是reque,将和我们的第一步一样⑧itempipeline解析我们的item这样就完成了scrapy整个数据流的流向,通过这一章对scrapy详细的分析每一个部分的作用,对于接下来开发搭建搜索引擎做铺垫。3.1.3搜索引擎系统的分析与设计首先,开发环境的搭建:IDE:pycharm数据库:mysql、redis、elasticsearch开发环境:virtualenvspider爬取网页在本次课题中,我们主要针对三大网页进行爬取,使用的是scrapy.spider和crawlspider两种方法。对于有唯一一个url扣可以获取到所有文章的网站我是基于scrapy.spider。主要爬取思路:1.获取文章列表页中的文章url,并交给scrapy下载后并进行解析2.获取下一页的url并交给scrapy下载后并解析,具体代码如下:post_nodes=response.css('#news_list.news_block')

forpost_nodeinpost_nodes:

image_url=post_node.css('.entry_summaryaimg::attr(src)').extract_first("")

ifimage_url.startswith("//"):

image_url="https:"+image_url

post_url=post_node.css('h2a::attr(href)').extract_first("")

yieldRequest(url=parse.urljoin(response.url,post_url),meta={"front_image_url":image_url},

callback=self.parse_detail)

break对于这几行代码来说,我们就可以获取到所有的url,可见scrapy有多么的强大,再获取到url,接下来我们获取我们所需要的具体的信息,这里我用的是itemloader,相比于item,其更易于维护,有关itemloader的详细用法,在这里不做过多的解释,代码如下;item_loader.add_value("praise_nums",j_data["DiggCount"])

item_loader.add_value("fav_nums",j_data["TotalView"])

item_loader.add_value("comment_nums",j_data["CommentCount"])

item_loader.add_value("url_object_id",get_md5(response.meta.get("url","")))对于全站爬取,这里用crawlspider会更好,代码如下:classLagouSpider(CrawlSpider):

name='lagou'

allowed_domains=['']

start_urls=['/zhaopin/Java/?labelWords=label']

rules=(

Rule(LinkExtractor(allow=("zhaopin/.*",)),follow=True),

Rule(LinkExtractor(allow=("gongsi/j\d+.html",)),follow=True),

Rule(LinkExtractor(allow=r'jobs/\d+.html'),callback='parse_job',follow=True),

)在rules里面我们可以自定义自己所需要爬取的url网站,可以过滤掉除了rule规则下的所有url,这样我们就可以获得所有的url,对网站信息的提取和之前的一样,下面只展示部分代码:item_loader=LagouJobItemLoader(item=LagouJobItem(),response=response)

item_loader.add_css("title",".job-name::attr(title)")

item_loader.add_value("url",response.url)

item_loader.add_value("url_object_id",get_md5(response.url))

item_loader.add_css("salary",".job_request.salary::text")在这两个爬虫写好之后,分别需要进行入库,也就是之前提到的pipeline,通过pipeline,我们可以将数据保存到本地mysql,由于pipeline在是第三章已经详细介绍过了,这里不做过多的描述。3.2本地数据展示本次课题对于数据的存储采用关系型数据库mysql,利用这个可以更好的储存管理我们的数据,提高了对数据的提取和展示。接下来是对几个网站获取的数据的展示,如下图4-1所示是我们整个数据库的可视化界面,这里利用NavicatforMySQL,这是一个针对MySQL设计的数据库管理工具,可以以可视化的方式对我们的数据进行索引管理图4-1数据库的界面其中article_spider就是本次使用的数据库,其中jobbole_article/lagou_job/zhihu_answer/zhihu_question是本次课题所使用的数据,本论文只展示其中一个的数据如下图4-2.图4-2数据保存mysql3.3前端引擎展示前端的搭建本次课题选择的是Django框架搭建,为了每个环境相对独立,这里首先新建一个虚拟环境,这里为了实现搜索建议的提示运用elasticsearch的基本语法,代码如下:classSearchSuggest(View):defget(self,request):key_words=request.GET.get('s','')re_datas=[]ifkey_words:s=ArticleType.search()s=s.suggest('my_suggest',key_words,completion={"field":"suggest","fuzzy":{"fuzziness":2},"size":10})suggestions=s.execute_suggest()formatchinsuggestions.my_suggest[0].options:source=match._sourcere_datas.append(source["title"])returnHttpResponse(json.dumps(re_datas),content_type="application/json")下图4-3是实现效果展示图4-3搜索展示图对于搜索结果如下图4-3图4-3搜索结果从整个前端界面可以看出简介清晰的内容分别有三个类型的搜索,右边是热门搜索和我之前搜索的记录,其中主要内容就是搜索结果了。这里以搜索“手机”为例子,可以看出手机被标红,按照“手机”关键字出现的次数作为权重按顺序显示在界面上。3.4本章难点内容解决1.selenium模拟登陆:对于一些网站,设立的只有登录才能获取信息,所以这里我们需要用到模拟登陆。selenium作为一个web自动化测试工具,他可以直接运行在浏览器上,就想真正用户在操作一样。首先需要进入虚拟环境,pipinstallselenium进行安装selenium。对于不同浏览器的操作我们需要下载不同的driver,本次实验使用的是chrome,我们可以在网站上搜索chromedriver进行下载,在模拟登陆之前,我们需要重写一个方法,接下来直接展示我们模拟浏览器的代码:defstart_requests(self):

#去使用selenium模拟登录后拿到cookie交给scrapy的request使用

#1、通过selenium模拟登录

#从文件中读取cookies

cookies=[]

fromseleniumimportwebdriver

importtime

browser=webdriver.Chrome(executable_path="E:/chromedriver/chromedriver_win32/chromedriver.exe")

browser.get("/login/login.html")在访问网页之后,我们通过selenium自带的api模拟点击页面进行操作登录。在登录网页之后,我们可以获取到cookies值,进行保存,在下一次登陆的时候,我们就可以通过保存的cookies直接进入网站。2.文字倒立识别:文字倒立识别是我们本次课题的难点之一,对于知乎的反爬机制,我们如何模拟登陆获取到文字道理的信息进行点击呢。在这里我们有一个简单的思路:1.保存图片、通过网上tensorflow进行图像处理分析,可以将倒立的文字的位置进行识别。2.返回文字的位置通过selenium模拟点击即可登录由于模拟点击登录的代码过长,这里不全部展示:"""

保存图片

1.通过保存base64编码

2.通过crop方法

"""

#1.通过保存base64编码

base64_text=chinese_captcha_element.get_attribute("src")

importbase64

code=base64_text.replace('data:image/jpg;base64,','').replace("%0A","")

#printcode

fh=open("yzm_cn.jpeg","wb")

fh.write(base64.b64decode(code))

fh.close()

fromzheyeimportzheye

z=zheye()

positions=z.Recognize("yzm_cn.jpeg")3.反爬虫实现随机ua和ip代理ua也就是useragent的缩写,中文名为用户代理。我们为什么需要用户代理呢?在爬虫运行的时候,默认是自带的scrapy进行访问网址,对于大部分网址来说都能分辨出这是一个爬虫从而禁止访问。我们平时用的浏览器例如Firefox、Chrome等都相当于是代理,比如,firefox浏览器中的useragent可能为

Mozilla/5.0(X11;Ubuntu;Linuxx86_64;rv:54.0)Gecko/20100101Firefox/54.0,其他浏览器的useragent都是不一样的。在你的爬虫获取数据的时候,如果频繁使用用一个ua,那么你有可能会被网站识别被禁止,这里就需要我们随机跟换ua来实现防止被封。在github上面已经有人做了这件事,维护了大量的user-agent代码如下:fromfake_useragentimportUserAgentclassRandomUserAgentMiddlware(object):

#随机更换user-agent

def__init__(self,crawler):

super(RandomUserAgentMiddlware,self).__init__()

self.ua=UserAgent()

self.ua_type=crawler.settings.get("RANDOM_UA_TYPE","random")

@classmethod

deffrom_crawler(cls,crawler):

returncls(crawler)

defprocess_request(self,request,spider):

defget_ua():

returngetattr(self.ua,self.ua_type)

request.headers.setdefault('User-Agent',get_ua())代理ip可以使用网上免费的ip网址,通过爬虫获取到:classRandomProxyMiddleware(object):

#动态设置ip代理

defprocess_request(self,request,spider):

get_ip=GetIP()

request.meta["proxy"]=get_ip.get_random_ip()4基于增量式爬虫的搜索引擎的系统测试4.1测试环境平台:Windows1064位开发工具:Python3.7、PyCharm2019、Chrome76.04.2测试结果对比通过“ace手机”关键词进行搜索对比一下百度,下图4-1为百度的搜索结果:图4-1百度搜索结果可以看出不管什么时候搜索这个关键词,百度前面几个结果一定是广告,而且对于我们想要的信息,都是更新不够快,没有一定的实效性。再看我们本次的搜索引擎,可以看出发布时间都是最近的信息,对于一些内容也是直接展示出来,实现了标注红色的效果。图4-2本文实现搜索结果4.3本章小结通过本次的测试,我们可以得出结论,即使是像百度和谷歌这种大型的网络搜索引擎,它的搜索结果也不一定是最新的,因为它的更新频率无法进行控制的,所以对于一些消息收录不够及时。在自己搭建的搜索引擎都是基于网络爬虫获取到的数据,也就是说都是事实可以访问存在的数据,我们也可以通过自己的调节不同网站获取的频率和数据,在爬虫一直运行的过程中,数据会一直的更新。实现每次获取的数据都是全网最新的数据,很好的解决了本文的问题,效果让人满意。5结论与期望通过本次课题的研究,解决了如何实现一个针对性的搜索引擎,如何更新搜索引擎的内容,如何快速并且找到有效的问题和答案,通过对网络爬虫的学习和深入的探讨,尤其是对Python中的scrapy框架的学习和研究,借助开源的scrapy框架我们可以很快的获取到源码,并且利用其中间键可以很快的开发出一套属于自己的有针对性的搜索引擎,并且简单了利用Django框架搭建了一套前端页面,进行数据的采集和可视化研究,通过scrapy中不同的spider爬取了不同的类型的网站,其中有关于技术性文章和某知名问答网站还有一个是某知名求职网站,利用scrapy框架可以很好的爬取到这些网站的数据。通过对这个课题的实现,发现了一个问题。大部分校园的搜索引擎都是基于Java实现的,lucence是目前最受欢迎的java全文搜索引擎,虽然对于java来说,语言逻辑清晰容易理解,但是由于java语言的特点,代码量比较大,后期维护的时间比较大。所以本文利用python的一些已完成好的库来实现搜索引擎,因为代码量少且易于维护,所以以此来尝试实现了一个基于scrapy框架的搜索引擎系统,实现了方法上的创新。对于报告之前提出的拟解决的问题,不仅找到了对应的解决方法,还做了以下的工作:1、对于url的去重策略,还运用了hash函数对url进行md5,获得唯一标识符。2、对于频繁爬取网络数据,容易被禁止,本文通过延长爬虫的频率,还从根本上通过更换IP代理来解决爬虫被禁止的方法,设置一个代理池,将大量不同的代理和IP地址放入其中,每一次爬取数据的时候,都随机调用其中的值3、通过不同形式的爬虫,可以了解到Scrapy爬虫的优势,一个框架可以应对多种类型的网站,并且在代码维护上可以通过item_loader,使代码更易于维护和修改移植。4、针对爬虫获取数据的保存上面,本次课题的研究不仅利用Scrapy自带的pipeline对数据进行保存,还可以自己编写中间件(pipeline),对爬取的数据进行不同格式的保存,并且因为爬取的速度和保存的速度不一样,所以本次课题还是先的爬虫的异步存储随着网络的不断发展,人们在网上发布信息也越来越容易,几乎每一个大型网站上面都会有一个属于自己的搜索引擎,不管是自己开发的还是套用模块开发的,都是一个不小的研究,如何使搜索引擎变得更容易开发并且移植,Python在这里做的就很好,不仅代码容易修改,而且针对多种类型的网站都有不错的结果。而相反,python也有缺点,对比与C语言、C++语言来说,它的速度很慢,不过对于自带的Python模块来说,也是基于C语言开发的。对于爬虫数据获取以及搜索引擎搭建来说,希望爬虫技术和搜索引擎都能被重视起来,得到耿学学者的支持。对于数据的处理来活,如何让用户更好的得到想要的数据是最重要的。希望之后,能见到人机智能交互式的搜索引擎,能工精准快速的获取到用户想要的资料及内容。22参考文献[1]游治勇.基于字的分词方法的研究与实现[D].电子科技大学,2015.[2]王勇.面向移动互联网的个性化推荐系统的设计与实现[D].北京交通大学,2016.[3]陈春阳.如何利用网络搜索引擎检索网络信息资源[J].兰州工业高等专科学校学报,2003(01):44-48.[4]陈龙飞.垂直搜索引擎在烟草行业的研究与应用[D].浙江理工大学,2016.[5]李霄.我国搜索引擎产业创新中的科技伦理问题研究[D].武汉大学,2017.[6]耿大伟.基于Python技术的校园网搜索引擎的设计与实现[D].燕山大学,2015.[7]黄兴财.大学生职位垂直捜索引擎的设计与实现[D].电子科技大学,2015.[8]韩逸.基于增量式爬虫的搜索引擎系统的设计与实现[D].东北大学,2015.[9]赵俊杰,李思霖,孙博瑞,李梦浩.浅谈大数据环境下基于python的网络爬虫技术[J].中国新通信,2020,22(04):68.[10]吴永聪.浅谈Python爬虫技术的网页数据抓取与分析[J].计算机时代,2019(08):94-96.[11]孙瑜.基于Scrapy框架的网络爬虫系统的设计与实现[D].北京交通大学,2019.[12]段晨迪.基于ElasticSearch面向M00C的垂直搜索引擎设计与实现[D].北京交通大学,201923致谢本次课题基于增量式爬虫的搜索引擎系统的设计与实现,在本次课题的过程中遇到了不少的问题,通过老师的自己上网的查询资料下,最终完成了这次课题的研究,再次我很感谢这次开发过程中老师对我的指导。首先,我很感谢我的指导老师周肖树老师在我毕业论文和设计上的指导和耐心的帮助。我每一次提问大大小小的问题,老师都会尽心尽力的帮我解决,对于论文的检查。以助我顺利完成本次课题的研究。谢谢周老师辛苦的检查的帮助。其次我还要感谢大学里每一位帮助过我的老师们和同学们,每当我遇到一些解决不了的难题的时候,都会有人站出来细心的指导我,每当我上课出现走神或者没听清,老师在下课的时候也会不厌其烦的再讲第二遍,对于同学们也很友好,通过这种方式,我能学到很多的知识,最后在毕业论文与设计上把自己所学给展示出来。最后,我要感谢我的舍友们,在大学四年里,大家都相互帮助互相度过这美好的时光,每当我有问题的时候你们都会第一个出来帮我解决,能够完成这次的毕业设计也有你们的帮助。在毕业论文结束的时候,也意味着我们即将毕业,虽然有很多的不舍,但对于所有即将毕业的大学生来说,这又何尝不是进入一个新的阶段。感谢大家这四年来的照顾。希望我身边的每一个人都有一个美好的未来。

HYPERLINK如何给电脑重做系统给电脑重做系统,自己学学,可少花钱,哈哈[图]

一、准备工作:

如何重装电脑系统

首先,在启动电脑的时候按住DELETE键进入BIOS,选择AdvancedBIOSFeatures选项,按Enter键进入设置程序。选择FirstBootDevice选项,然后按键盘上的PageUp或PageDown键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。

其次,退回到主菜单,保存BIOS设置。(保存方法是按下F10,然后再按Y键即可)

1.准备好WindowsXPProfessional简体中文版安装光盘,并检查光驱是否支持自启动。

2.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。

3.用纸张记录安装文件的产品密匙(安装序列号)。

4.可能的情况下,用驱动程序备份工具(如:驱动精灵2004V1.9Beta.exe)将原WindowsXP下的所有驱动程序备份到硬盘上(如∶F:Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。

5.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。

二、用光盘启动系统:

(如果你已经知道方法请转到下一步),重新启动系统并把光驱设为第一启动盘,保存设置并重启。将XP安装光盘放入光驱,重新启动电脑。刚启动时,当出现如下图所示时快速按下回车键,否则不能启动XP系统光盘安装。如果你不知道具体做法请参考与这相同的-->如何进入纯DOS系统:

光盘自启动后,如无意外即可见到安装界面,将出现如下图1所示

查看原图

全中文提示,“要现在安装WindowsXP,请按ENTER”,按回车键后,出现如下图2所示

查看原图

许可协议,这里没有选择的余地,按“F8”后如下图3

HYPERLINK

查看原图

这里用“向下或向上”方向键选择安装系统所用的分区,如果你已格式化C盘请选择C分区,选择好分区后按“Enter”键回车,出现下图4所示

查看原图

这里对所选分区可以进行格式化,从而转换文件系统格,或保存现有文件系统,有多种选择的余地,但要注意的是NTFS格式可节约磁盘空间提高安全性和减小磁盘碎片但同时存在很多问题MacOS和98/Me下看不到NTFS格式的分区,在这里选“用FAT文件系统格式化磁盘分区(快),按“Enter”键回车,出现下图5所示

查看原图

格式化C盘的警告,按F键将准备格式化c盘,出现下图6所示

HYPERLINK

查看原图

由于所选分区C的空间大于2048M(即2G),FAT文件系统不支持大于2048M的磁盘分区,所以安装程序会用FAT32文件系统格式对C盘进行格式化,按“Enter”键回车,出现下图7所示

查看原图图7中正在格式化C分区;只有用光盘启动或安装启动软盘启动XP安装程序,才能在安装过程中提供格式化分区选项;如果用MS-DOS启动盘启动进入DOS下,运行i386\winnt进行安装XP时,安装XP时没有格式化分区选项。格式化C分区完成后,出现下图8所示

被过滤广告

查看原图

图8中开始复制文件,文件复制完后,安装程序开始初始化Windows配置。然后系统将会自动在15秒后重新启动。重新启动后,出现下图9所示

HYPERLINK

查看原图

9

查看原图

过5分钟后,当提示还需33分钟时将出现如下图10

HYPERLINK

查看原图

区域和语言设置选用默认值就可以了,直接点“下一步”按钮,出现如下图11

查看原图

这里输入你想好的姓名和单位,这里的姓名是你以后注册的用户名,点“下一步”按钮,出现如下图12

HYPERLINK

查看原图

如果你没有预先记下产品密钥(安装序列号)就大件事啦!这里输入安装序列号,点“下一步”按钮,出现如下图13

HYPERLINK

查看原图

安装程序自动为你创建又长又难看的计算机名称,自己可任意更改,输入两次系统管理员密码,请记住这个密码,Administrator系统管理员在系统中具有最高权限,平时登陆系统不需要这个帐号。接着点“下一步”出现如下图14

查看原图

日期和时间设置不用讲,选北京时间,点“下一步”出现如下图15

HYPERLINK

查看原图

开始安装,复制系统文件、安装网络系统,很快出现如下图16

查看原图

让你选择网络安装所用的方式,选典型设置点“下一步”出现如下图17

HYPERLINK

查看原图

点“下一步”出现如下图18

HYPERLINK

查看原图

继续安装,到这里后就不用你参与了,安装程序会自动完成全过程。安装完成后自动重新启动,出现启动画面,如下图19

HYPERLINK

查看原图

第一次启动需要较长时间,请耐心等候,接下来是欢迎使用画面,提示设置系统,如下图20

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

HYPERLINK

查看原图

点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示

查看原图

这里建立的宽带拨号连接,不会在桌面上建立拨号连接快捷方式,且默认的拨号连接名称为“我的ISP”(自定义除外);进入桌面后通过连接向导建立的宽带拨号连接,在桌面上会建立拨号连接快捷方式,且默认的拨号连接名称为“宽带连接”(自定义除外)。如果你不想在这里建立宽带拨号连接,请点击“跳过”按钮。

在这里我先创建一个宽带连接,选第一项“数字用户线(ADSL)或电缆调制解调器”,点击“下一步”按钮,如下图22所示

HYPERLINK

查看原图

目前使用的电信或联通(ADSL)住宅用户都有帐号和密码的,所以我选“是,我使用用户名和密码连接”,点击“下一步”按钮,如下图23所示

查看原图

输入电信或联通提供的帐号和密码,在“你的ISP的服务名”处输入你喜欢的名称,该名称作为拨号连接快捷菜单的名称,如果留空系统会自动创建名为“我的ISP”作为该连接的名称,点击“下一步”按钮,如下图24所示

查看原图

已经建立了拨号连接,微软当然想你现在就激活XP啦,不过即使不激活也有30天的试用期,又何必急呢?选择“否,请等候几天提醒我”,点击“下一步”按钮,如下图25所示

HYPERLINK

查看原图

输入一个你平时用来登陆计算机的用户名,点下一步出现如下图26

HYPERLINK

查看原图

点击完成,就结束安装。系统将注销并重新以新用户身份登陆。登陆桌面后如下图27

HYPERLINK

查看原图

六、找回常见的图标

在桌面上点开始-->连接到-->宽带连接,如下图32

查看原图

左键点“宽带连接”不放手,将其拖到桌面空白处,可见到桌面上多了一个“宽带连接”快捷方式。结果如下图33

HYPERLINK

查看原图

然后,右键在桌面空白处点击,在弹出的菜单中选“属性”,即打开显示“属性窗口”如下图34

查看原图

在图中单击“桌面”选项卡,出现如下图35

HYPERLINK

查看原图

在图中的左下部点击“自定义桌面”按钮,出现如下图36

查看原图

在图中的上部,将“我的文档”、“我的电脑”、“网上邻居”和“InternetExplorer”四个项目前面的空格上打钩,然后点“确定”,再“确定”,你将会看到桌面上多了你想要的图标。如下图37

键盘上每个键作用!!!

F1帮助

F2改名

F3搜索

F4地址

F5刷新

F6切换

F10菜单

CTRL+A全选

CTRL+C复制

CTRL+X剪切

CTRL+V粘贴

CTRL+Z撤消

CTRL+O打开

SHIFT+DELETE永久删除

DELETE删除

ALT+ENTER属性

ALT+F4关闭

CTRL+F4关闭

ALT+TAB切换

ALT+ESC切换

ALT+空格键窗口菜单

CTRL+ESC开始菜单

拖动某一项时按CTRL复制所选项目

拖动某一项时按CTRL+SHIFT创建快捷方式

将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放

Ctrl+1,2,3...切换到从左边数起第1,2,3...个标签

Ctrl+A全部选中当前页面内容

Ctrl+C复制当前选中内容

Ctrl+D打开“添加收藏”面版(把当前页面添加到收藏夹中)

Ctrl+E打开或关闭“搜索”侧边栏(各种搜索引擎可选)

Ctrl+F打开“查找”面版

Ctrl+G打开或关闭“简易收集”面板

Ctrl+H打开“历史”侧边栏

Ctrl+I打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复

Ctrl+K关闭除当前和锁定标签外的所有标签

Ctrl+L打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+N新建一个空白窗口(可更改,Maxthon选项→标签→新建)

Ctrl+O打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)

Ctrl+P打开“打印”面板(可以打印网页,图片什么的...)

Ctrl+Q打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)

Ctrl+R刷新当前页面

Ctrl+S打开“保存网页”面板(可以将当前页面所有内容保存下来)

Ctrl+T垂直平铺所有窗口

Ctrl+V粘贴当前剪贴板内的内容

Ctrl+W关闭当前标签(窗口)

Ctrl+X剪切当前选中内容(一般只用于文本操作)

Ctrl+Y重做刚才动作(一般只用于文本操作)

Ctrl+Z撤消刚才动作(一般只用于文本操作)

Ctrl+F4关闭当前标签(窗口)

Ctrl+F5刷新当前页面

Ctrl+F6按页面打开的先后时间顺序向前切换标签(窗口)

Ctrl+F11隐藏或显示菜单栏

Ctrl+Tab以小菜单方式向下切换标签(窗口)

Ctrl+Enter域名自动完成[url=].**.com[/url](内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字

Ctrl+拖曳保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存)

Ctrl+小键盘'+'当前页面放大20%

Ctrl+小键盘'-'当前页面缩小20%

Ctrl+小键盘'*'恢复当前页面的缩放为原始大小

Ctrl+Alt+S自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存)

Ctrl+Shift+小键盘'+'所有页面放大20%

Ctrl+Shift+小键盘'-'所有页面缩小20%

Ctrl+Shi

温馨提示

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

最新文档

评论

0/150

提交评论