版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着计算机网络技术的发展,近年来,新的编程语言层出不穷,python语言就是近些年来最为火爆的一门语言,python语言,相对于其他高级语言而言,python有着更加便捷实用的模块以及库,具有语法简单,语句清晰的特点,使得它在代码的编程中,变得更加简洁容易上手,另外,python应用特别广泛,作为是一门应用性广泛的语言,无论是游戏的开发,还是数据的爬取,再到网站的搭建,python都能轻松驾驭,其中,爬虫的应用,更加使得python这门语言为人所知。作为网络搜索引擎的组成成分之一,爬虫能够有效的为我们搜索和爬取有用的信息,减少人工的操作,十分方便,在自己定义的条件下,采集得到某些网页的信息,比如房价、股票、招聘信息等,对于这些信息,我们可以对数据进行处理,从而得到我们所需要的信息。本文通过python实现了一个马蜂窝旅游网站的爬虫信息搜集,并对马蜂窝网站中采集得到的数据进行分析处理,得到想要的数据。关键词:PythonHtml爬虫旅游马蜂窝AbstractWiththedevelopmentofcomputernetworktechnology,inrecentyears,newprogramminglanguageshaveemergedendlessly.Pythonisthemostpopularlanguageinrecentyears.Pythonhasmoreconvenientandpracticalmodulesandlibrariesthanotherhigh-levellanguages.,Hasthecharacteristicsofsimplesyntaxandclearstatements,whichmakesitmoreconciseandeasytouseintheprogrammingofcode.Inaddition,Pythonisparticularlywidelyusedasaversatilelanguage,fromwebsiteconstructiontodataprocessingtogadgets.Thedesignofsmallgamescanbedonebypython.Amongthem,theapplicationofreptilesmakespythonalanguagemoreknown.Webcrawlerscannotonlycollectnetworkinformationforsearchengines,butalsoactasadirectionalinformationcollector.Undercertainconditions,theycancollectinformationaboutcertainwebpages,suchashouseprices,stocks,andrecruitmentinformation.Fortheseinformation,wecananalyzethedataProcessittogettheinformationweneed.Thisarticleistoimplementacrawler'sinformationcollectionandanalyzethedatacollectedbypythontogetthedesireddata.Keywords:PythonHtmlreptiletourismMafenwo目录第一章 引言 61.1 背景 61.2 国内外研究情况 6第二章 爬虫语言以及工具的介绍 82.1 Python介绍 82.1.1 Python语言的产生以及发展 82.1.2 Python语言的特色 82.1.3 Python语言的缺点 92.2 URL介绍 92.2.1 URL的定义 92.2.2 URL的解读 92.3 HTML介绍 102.3.1 HTML的定义 102.3.2 爬虫与HTML 102.4 爬虫工具介绍 112.4.1 Chrome 112.4.2 Pycharm 11第三章 项目的需求以及设计分析 133.1 项目的需求 133.2 项目的任务 133.3 设计分析 133.3.1 城市编号的获取 133.3.2 城市信息的爬取 133.3.3 爬取信息的处理 14第四章 项目的实现 154.1 城市编号获取的实现 154.1.1 城市编号获取使用库的介绍 154.1.2 城市编号获取过程 164.2 城市信息获取的实现 224.2.1 城市信息获取使用库的介绍 224.2.2 城市信息获取过程 234.3 数据可视化处理 314.3.1 数据可视化处理所使用的库 314.3.2 柱状图数据可视化代码实现 314.3.3 饼状图可视化代码实现 324.3.4 热力图数据可视化代码实现 334.4 可视化图片展示 33第五章 不足之处 39第六章 期望与总结 40参考文献 41致谢 42引言背景随着近些年来网络的快速发展,网络进入了大信息时代,网络上的信息呈现爆炸式的飞涨,五花八门的信息显示,这使得人们在网络上寻找自己所需要的信息时,显得越来越困难,当然,一个问题的出现,必然有一个方法去对应,信息的剧增,与之对应的,便是搜索引擎的出现,比如google、百度等等,搜索引擎通过搜集网络上数以万计的不同类型的网页信息,并为其建立起索引,通过搜索引擎,即使网络上的信息种类繁多,我们还是能够通过关键词的搜索,搜索得出与之对应的信息的网页。网络爬虫是一个自动化的程序,也是搜索引擎的组成部分之一,不同的搜索引擎,可以通过不同的搜索需求,选择合适的爬虫方法来搜集网络上的信息,传统网络爬虫主要从一个url开始,通过爬取目标网页的url,观察其组成结构特点,按照结构规律,构建新的url,不停的将新的url放入队列中,循环爬取,最后直到需求完成为止。优秀、高效的爬虫程序,能够使人们网络上找到更加精准的信息。本文通过python语言,实现了一个对于马蜂窝旅游网站的信息采集分析,通过对马蜂窝旅游城市的城市编号爬取,根据马蜂窝网站的网址规则,通过拼接得到马蜂窝旅游网站的城市url,根据获取得到的url,进入马蜂窝旅游城市页面,观察页面组成结构,通过标签定位,爬取我们所需要的页面信息,将其保存入本地文件,再对文件里面的数据进行数据处理,可视化分析,告诉你旅游去哪儿好。国内外研究情况python作为搜索引擎技术组成部分之一,自九十年代初诞生了第一个网络爬虫以来,python技术已经经过了20多年的发展,经过这么多年的发展,python技术也趋于成熟,逐渐覆盖了网页开发、游戏开发、爬虫分析可视化、脚本开发等等专业领域,并通过其简单易懂、代码编写效率高的特点,成为目前最为火热的开发编程语言,也正是其应用广泛,上手容易,语法强大,代码可读性强的特点,受到了很多人的喜爱,让很多人爱不释手。同时,由于不同的人对于数据爬取内容的差异,常常会产生不同的需求,因此爬虫主要可以分为以下两种:通用爬虫:通用爬虫其实很简单,它的作用就是将网络上的网页下载下来,保存到本地,其实就是生成一个副本,作为网页的备份。所以通用搜索一般得到的都是网页,对于用户来说,网页的内容十之八九都是没用的,要的只是网页中的某些特定的信息。所以就有了我们第二种爬虫方法。聚焦爬虫:聚焦爬虫是比通用爬虫更加复杂一点,它不同与通用爬虫,通用爬虫是将网页保存到本地,但是聚焦爬虫,它不会将整个网页爬取下来,它会筛选得到网页中我我们所需要的东西,而筛选的条件规则是由我们自己定义的,相比通用爬虫,聚焦爬虫它做的工作更多,但是得到的数据更加符合我们的要求,本文所实现的爬虫,就是通过聚焦爬虫所实现的。爬虫语言以及工具的介绍Python介绍Python语言的产生以及发展Python是上世纪八十年代末开始由Guido开发,九十年代初发行的一门编程语言,其作者参与过ABC语言的开发,所以对ABC语言其中的弊端有所了解,认为ABC语言虽然语言优美,功能强大,但是却受限于它的非开发性,没有得到广泛的应用,因此想开发出一门新的语言,能够摒弃掉ABC语言的弊端,打破这个限制,正是如此,python就诞生了,python刚刚推出不久,就迅速得到了各行人士的青睐,经过多年以来的不断改善,python语言已经逐渐稳固它在编程语言中的地位。根据从TIOBE网站上得到的数据,从2002年开始,python语言就趋于一个稳定上升的状态,呈线性增长,正是如此,python成为了近年来最受欢迎的编程语言之一。图2.1.1计算机编程语言热门排行榜Python语言的特色首先,Python是一门强大、灵活的语言,与C、C++、Java等语言相比较,python的语法简单优雅,往往不用通过很复杂的代码,就能实现强大的功能,例如Java需要100行代码才能实现的功能,python往往只需要一半或者更加少,大幅度降低了学习与使用的难度,很适合人们的学习。其次,python是一门开源免费的语言,简单的来说,就是不花钱就能使用,我们可以直接下载安装运行,也能对其源码进行修改,十分便捷。再次,效率极高,python被称为胶水语言,拥有强大的第三方库,人们往往只需要将库下载调用,在库的基础上进行开发,就可以实现很多复杂的功能,节省了不少时间,避免了重复造轮子的现象。最后,python语言可移植性强,正是由于python的开源性,使得python拥有了良好的可移植性性能,让其可以被移植到其他的平台之下,例如我们所熟知的window系统,Linux系统,安卓系统和苹果系统等等。总而言之,python是一门用途广泛,又容易上手的编程语言。Python语言的缺点Python虽然拥有众多的优点,但是事物往往很难做到十全十美,编程语言也一样,python虽然简单优美,但是运行速度相比其他编程语言来说,却显得缓慢,对比C语言来说,C语言是先编译后运行的,编译的时候就已经将代码转化成了CPU所能执行的机器码,而python是解释性语言,因此它的代码在运行的过程中,需要先将代码编译成CPU所能理解的机器码,这个过程就需要耗费很多时间,导致了python的运行缓慢。另外,由于python的开源性,导致了python代码无法加密,实际上,如果我们要发布一个python程序,其实就需要将我们所敲打的源码发布出去,这样别人就直接得到了你的源码,能够轻易的使用并修改你的源码,而C语言是先编译后运行的,它的发布是发布已经编译后的机器码,别人是很难逆推得到源码的,其实,基本所有的编译性语言,都不需要担心源码的泄露,而像python这种解释性的语言就比较难了,因此在保密度这一块,python还是略显劣势。URL介绍URL的定义URL,通俗的来讲的话,URL其实就是网络地址,每一个URL,就代表着特定的资源在网络或者电脑上的位置,这个位置既可以是电脑的本地磁盘路径,也可以是局域网上的某个计算机,但是,总的来说,URL更多的是指网络上的网页站点。而这里所说的特定的资源,可以是一个HTML界面、也可以是一张照片、一个文本、或者是一个文件等等。URL的解读URL是由不同的组件组成的,就拿本文所要爬取的网站马蜂窝来说,马蜂窝的网站地址为:/mdd/,这个网站就相当于一个URL,我们可以这样解释它:(1)这是一个https协议的网站,它告诉了浏览器访问资源的时候,应当使用https协议,在目前,网络上使用的协议大多为HTTP或者https(加密)。(2),是域名,指向你所要访问的资源的服务器端,这里也可以使用IP地址显示。(3)mdd,这里表示的是访问资源在该服务器上的路径,但是有时这个路径会出错,最常见的问题就是该路径的资源已经被移走或者不存在,导致寻找失败。HTML介绍HTML的定义HTML,是一种超文本链接标示语言,是网站搭建的基本骨架,简单的来说,HTML就是网页的载体,它主要由两部分组成,一个是head,另一个是body,head是描述浏览器的主要信息,body是用来装载网页界面的主体内容,网页上所看到的文字信息或者图案,都是存在body里面,在HTML界面中,存在着超级链接,所谓的超级链接,其实就是将URL地址放入了界面中,人们可以通过鼠标的点击,可以使浏览器对其进行解析,并能够快速便捷的跳转到URL指定的资源界面,正是如此便捷的操作,使得HTML受到了很多编程人士的喜爱,也是它成为应用广泛的原因之一。爬虫与HTML本文之所以介绍HTML界面,其实是和我们爬虫的设计有一定的关联,在HTML中,为了方便的网页内容的处理,在HTML加入了标签这种东西,标签是由<>组成,其中分为起始标签和结束标签,结束标签在<>的基础上,加多一个/,即</>,而<>中的内容,则是根据自己所要编写的内容决定,例如我们想要定义一个标题,则需要这么写:<title>,类似的例子还有很多,具体要思考我们标签是要干什么再来决定。在我们的爬虫中,我们就是需要根据这些标签的位置,来爬取我们所需要的信息,根据标签的定位,观察标签地位的规则,获取需求标签位置下的内容,通过字符分割或者直接爬取的方式,将其内容中有用的信息存储下来,达到我们爬取的目的。图2.3.2HTML下的标签爬虫工具介绍Chrome本文进行爬虫的浏览器选择的是chrome浏览器,之所选择chrome浏览器,首先,chrome浏览器的界面简介,在所有浏览器中,chrome浏览器算是性能最好的浏览器,其次,chrome浏览器全面支持HTML,这对于我们之后的爬虫有良好的帮助,在兼容性方面,chrome浏览器的兼容性问题很好,使用过程会给人一种良好的体验,另外,爬虫所使用的selenium库,与其他浏览器的驱动存在一定的bug,导致某些功能无法实现从而出错,我们在使用selenium时,需要在chrome浏览器对应的版本下载安装Chromedriver驱动程序,并放入python文件下,便于我们之后的调用,最后,chrome浏览器推出了headless模式,即无界面浏览模式,在没有浏览器界面的情况下,依旧能实现与有浏览器界面相同的操作,这对于我们爬虫抓取来说,是一个十分便捷的功能,但是在本文中,为了更加直观的表现出爬虫过程,我并没有把无界面浏览的代码写上去。Pycharm我们在做一件事情的时候,既要有一定的头脑,也需要趁手的工具,才能有更好的效率,编程也是如此,虽然python安装后有自带的编辑器IDLE,但是对于我们来说,IDLE对于大多数新手乃至学习过程中的人们并不太友好,没有提示,没有补全,只有最后的运行结果或者报错,这对于大多数人来说,是一种很难受的体验,大大的降低了人们学习过程中的效率和导致了宝贵时间的流逝。所以说,只有选对了正确的工具,才能使工作的效率以及代码的质量得到提升,在本文的爬虫过程中,选择的工具是Pycharm,Pycharm是python的一种IDE,能够帮助人们在进行python语言编写的过程中,节省时间,提高生产效率,提高代码的质量,在使用的过程中,如果出现一些语法错误或者拼错代码,Pycharm能够实现实时监测,一旦发现错误,将会有明显的下划线报红提示,能够使人第一时间发现错误,修改代码。另外,Pycharm的补全功能也十分便捷,一行代码在编写的过程中,并不需要全部敲打,只需要有首字符提示,便能显示出与之对应的代码语言,十分的节约时间。在程序运行出错的同时,会显示语句出错的地方,鼠标点击对应的出错点,就能实现智能跳转。对于文件的管理来说,Pycharm也是优于IDLE,代码文件直接就在文件夹下,可以有多种不同的代码文件夹存在,需要哪些代码文件,很方便直接点击就能打开。最后,Pycharm的debug检查,有时候会遇到代码不报错,但是却得不到自己想要的数据,这个时候,debug检测就派上大用场了,使用debug功能,能够看到代码的执行过程,从细节上找到代码陷入错误的地方,是一个很好用的功能。所以,本文的爬虫爬取信息所使用的工具就是Pycharm。项目的需求以及设计分析项目的需求如今,人们的生活质量越来越好,水平条件越来越高,也使得更多的人注意到身心的放松与娱乐,很多人在自己闲暇的时候,都希望能度过一个好的时光,正因为如此,旅游行业逐渐火热了起来,渐渐的进入到了人们的生活之中,但是很多人在选择旅游的时候却不知所措,因为他们不知道去哪里玩好,有什么好玩的,有什么好吃的,所以,本文设计了一次爬虫,爬取马蜂窝旅游网站的旅游信息,将信息数据进行分析,筛选出马蜂窝旅游网站的热门城市、热门城市景点、热门小吃等等的数据信息,让人们得以在众多的旅游城市选择中,找到那些热门景点以及热门的小吃,少走弯路,找到一个最适合自己旅游的城市,拥有一个愉悦快乐的假期旅游。项目的任务首先,旅游,我们需要先确定下来一个城市,因此,我们任务要求第一件就是马蜂窝旅游城市中排行前10的热门城市各自为什么,其次,我们需要得到各个城市的景点数据,根据数据分析得出排行前15的热门景点为哪些,最后,爬取与美食相关的信息,得出旅游中最具代表性的美食前15的排行。设计分析城市编号的获取首先,我们爬取旅游信息,肯定是爬取众多城市的旅游信息,不同的城市在马蜂窝旅游网站中的URL是不同的,但是,通过对比我们可以发现,在马蜂窝旅游网站中,所有的城市以及城市景点信息,都是由特定的五位数字或者六位数字组成的,这对于我们爬取不同城市的旅游信息是一个突破口,根据这个数字,我们就能拼接得到不同城市的不同URL地址,得到城市旅游的界面。城市信息的爬取在获取得到城市编号后,我们就能得到马蜂窝旅游网站的城市的URL地址,通过地址我们就可以进入到城市旅游的界面,这个时候我们就需要考虑,我们应该爬取什么,抓取哪些信息,哪些信息是有用的,能够支持我们爬取信息后数据分析的可信度,在这里,我们是根据马蜂窝旅游网站里面不同城市的游记的数量、印象的标签数、特色美食的排行、购物娱乐的排行等等来得出的信息。爬取信息的处理在我们得到城市的具体旅游信息后,最后就是数据的可视化处理,首先,我需要将马蜂窝旅游网站中游记前10的热门城市、前15的景点标签类热门城市、前15的的餐饮标签热门城市、前15的娱乐购物标签类热门城市可视化处理,采用柱状图显示。接着,我们对景点人气前15的城市景点、餐饮人气前15的城市美食、娱乐购物人气前15的城市娱乐可视化处理,采用的也是柱状图显示。最后,我们对热门城市前20的热门城市进行热力图显示,这就是全部的信息处理可视化了。图3.3程序流程图项目的实现城市编号获取的实现城市编号获取使用库的介绍os库,python里面os库是用来处理各种文件和目录的,在os库里面,python提供了很多种方法,例如,access(path,mode),用于文件的权限检查,path是指文件路径,mode则拥有四个参数,可以分别检测出path路径下的文件是否存在,是否可读,是否可写,是否可执行。与之对应的,chmod(path,mode),则是用于文件的权限修改。Remove方法,则是用来删除path路径下的文件,os库的方法还有很多,这里就不一一举例出来了,os库其实就是python对于我们操作系统功能的一个普通操作,本文这里我们使用到的os库里,是调用了一个os.chdir(path),用来改变文件路径,使得我们爬虫保存下来的数据文件能够存储到指定的位置。urllib库,python里面urllib库十分的便捷,它为我们提供了一系列的URL操作,这里要说明的一下就是,以前的python版本中,urllib与urllib2是分开来的,换句话说,urllib2是urllib的升级版,不过这两个又互相存在着不同点,它们所包含的函数有些是不互通,所以在python2.x中,它们是混合搭配使用的,无法相互替代的,但是在python3.x后,urllib2是合并到了urllib中,这里我们安装的python是3.x的,所以我们直接使用的就是urllib,在urllib模块中,我们需要的用到的就是方法是request,request可以帮助我们抓取URL下的内容,是最基础的HTTP请求模块,它也可以为我们爬虫实现一个伪装操作,我们可以通过添加Headers,将我们的操作伪装成一个浏览器,模拟我们人为的操作,类似于我们平常上网的操作,输入网址点击跳转,就能跳转到我们所需要访问的网页的步骤是相同的。BeautifulSoup4库,BeautifulSoup4是我们爬虫所经常使用的一个库之一,在HTML界面中,数据的位置是有一定的规则和结构的,BeautifulSoup4就是一个可以根据HTML页面结构抓取我们所需要的数据的库之一,类似像BeautifulSoup4还有lxml和pyquery等等,这里使用BeautifulSoup4是因为BeautifulSoup4简单容易上手,而且它的文档容错率较高,对于我们这种数据抓取保存还是比较合适的,BeautifulSoup4使用soup可以直接获取得到节点的元素或者名称,但是在同级中有多个相同节点的时候,soup只会选择第一个,我们所爬取的内容很多都是同一节点下多个元素的数据,所以这里使用BeautifulSoup4里面的函数最多的就是find_all()与find(),find_all(name,attrs,recursive,text,**kwargs)能帮助我们查找符合括号中条件的所有元素中的参数,name所指的是命名为name的所有标签,attrs表示属性,例如id、title、class等等,这里的class由于是python的专有词,所以使用的时候,需要特殊处理下,我们只需要对其后面加下划线,就能解决,即class_,find()和find_all()使用差不多,但是使用find匹配的是第一个元素,有时候我们需要的是某一个元素下面下属的多个元素,所以这里我们有时候会使用到find()与find_all()的混合使用抓取所需要的元素下的数据。Pandas库,pandas库是python中的一个科学计算库,它可以说是基于Numpy库的一个工具,这里的Numpy后面也会用到,他们最大的区别在于,Numpy是用于数值计算的,它是一个多维数组的容器,而pandas库更多的是用来做数据处理的,可以说是为了解决数据分析任务而衍生出来的一个工具,同时它也算是一个表格容器,pandas可以对数据进行导入、处理、输出、统计等等一系列的操作,能够对数据进行一个有序的整理,这里pandas库,首先我们使用到的是它的DataFrame,由于我们爬取的数据很多,如何将这些数据进行处理保存,这是一个问题,我们这里使用的是pd.DataFrame(),用于建立一个二维数组对象,再将数据放置进去这个对象里面,其次,有了数据之后,不同数据是在不同的地方爬取下来的,我们就需要对某些数据进行合并才能显示出效果来,这里我们就需要用到pd.concat()方法,可以对多个DataFrame对象进行合并,concat方法里有多个参数需要我们选择,具体怎么做要看我们需要什么,最后,pandas也为我们提供了文件数据的读取功能,我们第一步是将马蜂窝各个城市的专属数字爬取下来保存成一个Excel文件,后面第二部分会调用到这些数据,所以pandas的read功能就很好的解决了我们这个问题,通过pd.read_excle(),我们就能很好的打开excel文件,从而从中拿取我们所需要的数据。Selenium库,Selenium用于网站的自动化测试,它适用于当前很多的主流浏览器,它的作用是用于模拟我们对浏览器的操作,如点击、下滑、跳转等等,同时,我们还需要下载对应的浏览器驱动来配合Selenium操作,实现操作目的。城市编号获取过程首先,我们进入马蜂窝网站,我们需要爬取的是国内旅游信息,总所周知,中国的地区模块是由省份以及直辖市组成,我们可以在马蜂窝热门目的地国内省份开始寻找有用的信息。按F12打开开发者工具后,我们将箭头点击页面中的省份名称,开发者工具就会直接定位跳转到箭头点击位置的当前页面标签下。图省份URL抓取通过图片中我们可以看到,省份的URL信息是放置在一个属性为<divclass=“hot-listclearfix”>下的dt标签里a标签里面,所以我们需要做的就是,定位到<divclass=“hot-listclearfix”>标签下,寻找所有dt标签,将dt标签里面的a标签的href属性内容抓取下来,这就是我们爬取马蜂窝城市URL的第一步,抓取省份URL。图省份URL抓取代码实现在Python里,python为我们提供了很多的函数,这些函数是python内部以及包装好了的,使用起来非常方便,同样,我们也可以自己在python中写自己的函数,这样是为了方便在其他地方使用同样的代码时,不需要重新写一边,而是只要调用这个函数就能实现,减少了代码累赘。这里我们将获取省份URL地址的代码写进了一个名为find_cat_url函数里,首先,很多网站是不允许爬虫爬取数据的,这样会给网站额外增加运行负担,所以为了不被网站发觉我们是爬虫,一般都会用表头伪装成浏览器,就像代码截图中一样,在find_cat_url函数中,我们首先使用了一个表头伪装成火狐浏览器,假装是认为浏览网站信息,而不是爬虫,其次,我们使用了request方法,向马蜂窝网站发送请求,得到响应后,我们使用beautifulsoup库的html.parser解析器进行解析,按照属性和标签名找到我们所需要找到的省份数据,所以这里我们使用find()方法,找到属性为“class”:“hot-listclearfix”的标签,在这个标签下,使用find_all()方法,找到当前标签下的所有dt标签,新建两个数组,命名为cat_url和cat_name,cat_url用来放置省份的URL,而cat_name用来放置省份的名称,这里使用了一个for循环来爬取数据,for循环的长度为dt标签的长度,毕竟我们数据的多少就取决于dt标签里多少个省份,for循环遍历所有的省份,根据我们之前的截图,我们可以知道省份的信息是放置在dt标签下的a标签中,所以我们遍历所有的a标签,将a标签中的属性为href的信息添加到cat_url中,将a标签的文本信息添加到cat_name中,将cat_url返还,这样我们就得到了马蜂窝网站的省份url地址。接着,得到省份的URL地址后,我们进入到马蜂窝省份界面,查看界面源代码,查找下如何抓取省份下城市URL。图省份城市界面分析进入到省份界面后,这里以云南省为例,我们可以发现,城市的信息是位于网页界面的目的地下的热门城市里。图省份URL分析进入到省份热门城市里后,我们会发现,省份的URL和我们之前爬取的的URL有所不同,之前的URL里的部分组成为travel-scenic-spot/mafengwo,但是进入省份热门城市界面后,URL组成部分变为了mdd/citylist,不过其他组成部分还是一样的,所以这里我们需要对之前爬取的省份URL进行处理,将travel-scenic-spot/mafengwo替换成mdd/citylist/。图城市URL分析抓取进入省份热门城市后,通过开发者工具我们可以发现,例如我们打开云南的丽江看看,标签中已经蕴含了丽江的跳转链接,即为travel-scenic-spot/mafengwo/10186.html,与我们单独手动打开丽江链接对比可以发现/travel-scenic-spot/mafengwo/10186.html,a标签中的属性data-id就是我们所需要爬取的城市URL特定数字,有了这些数字,我们只要通过/travel-scenic-spot/mafengwo/data-id.html,就能去到任何马蜂窝热门城市界面,所以,这里的属性data-id下的数据就是我们所需要爬取的,同时还有标签属性为class=“title”下的文本内容,即城市名字是我们所需要爬取的。图城市URL抓取实现代码同样,我们也是将城市URL抓取的方法用函数包装起来,函数名为find_city_url,这里我们也是新建了两个列表,一个city_name_list,用来保存城市名称,一个city_url_list,用来保存城市URL中的特定数字,首先也是一个循环语句,对url_list进行遍历,这里的url_list其实是函数调用前,已经对find_cat_url函数中的省份URL传入到了url_list中,我们这里遍历后的第一件事就是将第一次爬取下来的省份URL中的travel-scenic-spot/mafengwo全部换为mdd/citylist/,这里使用的是replace进行替换,可以将旧字符串替换成新的字符串,再将替换后的URL传递给浏览器,接着是一个while循环,还是和之前一样使用的是beautifulsoup进行解析,根据之前的开发者工具我们可以看出,我们所需要的属性data-id,是位于a标签下,在a标签下,所有的a标签都有一个共同属性,那就是data-type=“目的地”,所以我们这里使用find_all,找到所有a标签下属性为data-type=“目的地”的位置,将城市的名称,即a标签的文本内容通过循环添加到city_name_list中,将属性data-id的数据也通过循环添加到city_url_list,一个省份有很多个城市,所以不可能一页就能列出来的,所以这里我们就用到了之前介绍的Selenium,通过Selenium模拟滚动,我们页面向下滚动800像素,然后调用js脚本,通过开发者工具我们可以得到马蜂窝网站下一页的标签,<arel="nofollow"data="2"href="#"class="pg-next_j_pageitem">后一页</a>,所以我们只要找到class为pg-next的地方,模拟点击就能自动翻到下一页,返回city_name_list和city_url_list,从而实现整个省份的城市URL获取。图城市URL抓取函数调用这部分代码是函数的调用,首先是url地址,为马蜂窝旅游网站地址,然后调用find_cat_url函数,将获取的省份URL传递给了url_list,接着调用了find_city_url函数,将城市名和城市URL通过二维数组保存,再输出到excle表中。图城市URL爬取数据这里就是代码运行后所获取的数据,由于马蜂窝网站结构的设计,我发现属于省的城市数据能够爬取得到,但是直辖市因为标签位置的不同而无法抓取,由于马蜂窝旅游网站直辖市数据量较小,只有四个,所以这里就直接人为的添加了上去,这里一共爬取了一千八百多条数据,实际上中国并没有那么多城市,主要是马蜂窝旅游网站将城市与旅游景点也一块算进热门城市里面了,所以导致了数据的溢出。城市信息获取的实现城市信息获取使用库的介绍这里使用的库与之前我们城市编号获取的部分库相同,也使用了request库,os库,beautifulsoup4库和pandas库,这里就不再介绍了,这里介绍的是城市编号获取代码部分所没有使用到的库。Numpy库,前面我们说过,pandas可以说是基于numpy的一个工具,但是它们运用于不同的地方,numpy应用于多维数组的运算以及矩阵运算,这里我们之所以需要用到numpy库,是因为我们需要对数据进行降维,将多维数组降为一维,在numpy中,降维有两种方法,一种是np.flatten(),使用这个函数,它返回给我们的是降维数组的一份降维拷贝,即原本的数组是不会改变的,但是这里我们对降维后的数组是有要求改变的,所以我们这里使用的是第二种方法,就是np.ravel(),使用这个函数,我们就能对原数组进行降维。Socket库,一开始在进行爬虫的时候,经常程序会卡死不动弹,这就对我们数据的爬取造成的一定的影响,毕竟数据较为庞大,一旦进程卡死,前面所爬取的数据就前功尽弃,所以这里我们使用了socket库的一个setdefailttimeout方法,我们可以设置时间,当HTTP或者Socket获取时间超时时,自动跳转到下一次操作,防止爬虫某个页面的时候,时间过长,导致程序卡死,自从使用了socket.setdefailttimeout()后,爬虫程序在运行的过程中没有出现卡死的情况了。城市信息获取过程首先,我们需要爬取的是城市的游记数量多少,来证明马蜂窝旅游网站哪一座城市是热门旅游地点。图游记网站位置这里我们可以看出,游记是位于社区里面的游记,进入之后拉到最下就有游记的总量,我们需要做的就是将这个总量爬取下来,所以我首先需要知道这个总量的位置是位于HTML标签哪里。图游记标签位置获取这里我们可以看到,游记的总量是位于属性为count下的第二个标签里面,这里标签的位置是从0开始计算的,所以我们需要获取的就是下标为1的标签数据。这是我们爬取分析马蜂窝热门旅游城市的数据之一。接着,我们要爬取的是城市的印象标签,爬取各种印象标签的总数,来对一座城市的景点、美食、娱乐购物进行数据爬取。图印象网站位置我们可以通过马蜂窝网站的社区→行程里面得到印象的位置图印象标签位置获取以及分析打开开发者工具我们可以看到,城市印象是位于属性为class=“m-boxm-tags”标签的a标签里面的em标签里面,所以我们第一步是将em标签里面的文本内容爬取下来,这个时候我们发现了一个问题,就是a标签里面的href属性有所不同,例如胡同儿的href属性里面是jd,我们通过首字母可以猜测得出是景点,北京烤鸭的href属性里面是cy,我们通过首字母可以猜测得出是餐饮,所以这些城市印象是由不同的成分组成的,所以我们对这城市印象要进行处理,分清楚哪些是jd,哪些是cy,哪些是yl、gw,这里我们打算将娱乐与购物合并一块,如何将这些城市印象区分开呢,我们可以采用切片的方法,通过对比我们可以知道,无论是jd还是cy,它们都位于href属性内容的第2、3位,所以我们使用切片的方法,将第2、3位的内容切片出来,就能获得城市印象是由什么构成,这里我们打算分成四个部分,一个部分是城市的总体印象,将所有印象不分分类全部加起来的总和,第二部分是景点印象,第三部分是餐饮印象,最后的部分是娱乐购物印象。在爬取完城市印象之后,出门旅游,到一定回去一些热门的景点看看,尝试下当地的美食,去购物放松下自己,所以下一步我们就是对城市的景点、美食以及娱乐购物进行数据爬取,看看哪些景点最热门,哪些美食最诱人,哪些地方是放松身心的好地方。图城市热门美食获取以及分析这里,我们可以通过马蜂窝旅游网站的城市餐饮→餐饮,都得城市的美食排行榜,同样,我们打开开发者工具,我们可以发现,城市的美食排行榜中,美食名称数据是位于class属性为list-rank中的h3标签中,而美食热度是位于class属性为trend下的文本内容,所以这里很简单,只需要把所有h3标签的内容以及class属性为trend的美食热点爬取下来就行。另外,娱乐模块的排行榜获取与分析与餐饮基本是一模一样的,只不过在URL中,娱乐的URL是yl,而餐饮是cy,但是数据的位置以及爬取都是一样的,代码也基本一致,所以这里就不对娱乐排行榜进行分析了。图城市热门景点获取以及分析这里我们可以看到马蜂窝城市景点的信息位于景点界面,页面包含了城市热门景点的前五名以及点评,通过开发者工具我们可以发现,城市的热门景点信息以及点评数是位于class属性为rowroe-top5下的h3标签里面,所以我们需要将h3标签里面的a标签的文本内容爬取下来,这样我们就能得到城市的景点名称,接着,我们要爬取的是点评数,这里点评数是位于class属性为rev-total下的文本内容,但是这里我们需要的只是数字,而不需要文字,所以我们可以将标签中固定有的“条点评”替换成为空,再将数据保存下来,这样我们就得到了城市热门景点的数据。图城市标签数据以及游记获取实现代码这里代码实现的是城市各类印象标签的获取,这里我们定义了一个get_city_base函数,首先是url的传入,通过马蜂窝旅游网站的行程模块我们可以很简单的发现出url的规律,url的规律是:/xc/'+城市编号+'/',这里的城市编号就是我们第一部分所爬取下来的数据,我们只需要将城市编号依次放入后,就能打开不同城市的行程界面,在行程界面下,根据我们之前的分析,使用find方法,找到class属性为m-tags标签,再找到该标签下class属性为bd里面的所有a标签以及em标签,定义一个tag_count列表,将城市的所有em标签的数据放进去,然后对a标签的属性进行一个切片,切出第二、三位的有用数据,定义一个par列表,放置切片数据。接着,对tag_count列表的数据进行相加,这就得到了城市的印象标签总数,对tag_count列表进行遍历相加,这里遍历的过程我们需要设置条件,条件与我们切片的内容有关,分别为jd、cy和gw-yl,对应的分别是景点、餐饮和购物娱乐,这样就得到了城市的景点印象标签总数、餐饮印象标签总数和购物娱乐印象标签总数。接着我们爬取游记总数,游记是URL规律为/yj/'+城市编号+'/',使用find方法,找到class属性为count下的span标签第二个文本内容,就得到了城市游记的总数,最后,将城市名称、城市印象标签总数、城市景点标签总数、城市餐饮标签总数、城市娱乐购物总数和城市游记总数返还。图城市小吃-景点-娱乐信息获取实现代码这里实现的是城市小吃、景点、娱乐数据的爬取,第一个函数名为get_city_food,它是用来获取城市小吃排行榜里面的数据的,首先,还是url的导入,这里url的规律是/cy/'+城市编号+'/gonglve.html,还是使用find的方法,找到class属性为list-rank标签下的所有h3标签,这里爬取的是小吃的名称,由于爬取的只是小吃的名称,可能导致不知道是哪里的小吃,所以我特意在小吃名称前面加入了城市名称,以便区分,同样还是在class属性为list-rank标签下使用find_all方法,找到所有class属性为trend的文本内容,这里爬取的是小吃的游记推荐数,最后将爬取得到的小吃名称,小吃游记推荐数通过一个二维数组返回。同样,在城市娱乐中,城市娱乐与城市小吃所使用的爬取代码是一样的,只不过是url有所区别,城市娱乐的url规律是/yl/'+城市编号+'/gonglve.html,这里只需要将小吃代码的url改为城市娱乐的url就可以了,返回一个娱乐名称以及娱乐游记推荐数的二维数组。对比小吃和娱乐,景点的代码还是有所不同的,同样,景点的函数我们命名为get_city_jd,景点的url规律为/jd/'+城市编号+'/gonglve.html,还是使用find的方法,找到class属性为row-top5标签下的所有h3标签,这里爬取的是景点的名称,由于爬取的只是景点的名称,可能导致不知道是哪里的景点,所以我特意在景点名称前面加入了城市名称,以便区分,使用find_all方法,找到class属性为rev-total标签的文本内容,由于内容包含中文字符,我们是哦那个replace方法,将文字内容“条点评”替换为空,返回一个景点名称以及景点点评数的二维数组。最后,我们对这些返回的二维数组导入到excel表中。图城市标签数据以及游记数据图0城市小吃-景点-娱乐信息数据通过代码,这样我们就能得到四个存储数据的excel表格,最后我们就需要根据这些数据,进行可视化分析。数据可视化处理数据可视化处理所使用的库Pyecharts库,这里我们使用的Pyecharts来对数据进行可视化处理,Pyecharts用于图表的生成,它可以将数据以图表的形式生成,然后自己在本地生成一个网页用于保存图表信息,我们可视化的图表就是在这些生成的网页里面,Pyecharts里面包含了很多图表,这里我们可视化使用到的有bar,geo以及page。柱状图数据可视化代码实现图马蜂窝全国旅游游记-景点-餐饮-娱乐购物信息可视化代码这里我们使用numpy库读取之前爬虫所保存的excel数据,对其中我们需要的数据进行了一个排序,毕竟我们是需要得出哪些数据是比较靠前来得出热门程度,可视化使用的是bar柱状图,xaxis表示的是x轴坐标,x轴坐标一共有十五个数据,数据来源是city_base表中tag_yl_count排名前15位的城市名称,y轴坐标是city_base表中tag_yl_count排名前15位的数据,还有就是柱状图名称,这里由于某些名称过长导致了x轴无法显示完全,所以这里我们对x轴数据使用了一个45°的倾斜表示,这样x轴数据就能显示全部,这里我一共写了四个bar方法,大致代码都是差不多的,所以这里只截图了一个bar方法出来,这四个bar的区别在于读取city_base表后,对其进行排序时的数据是不同的,四个bar分别排序的数据分别为total_city_yj、tag_jd_count、tag_food_count、tag_yl_count,最后使用了一个page,将四个bar添加到page中,生成为一个命名为马蜂窝全国旅游游记-景点-餐饮-娱乐购物信息可视化的HTML页面中。饼状图可视化代码实现图景点人气排名-餐饮人气排名-娱乐购物人气排名信息可视化代码这里是对城市的小吃、景点、娱乐进行可视化处理,由于这三部分代码构成也是差不多的,所以这里就拿娱乐模块来讲,首先是数据的导入,娱乐模块的数据我们是存储到了一个city_yl表中,所以第一件事是读取,然后根据表中的yl_count进行从大到小的排序,使用pie方法,首先设置长宽,接着添加数据,具体使用是[list(z)forzinzip(Faker.choose(),Faker.values())],Faker.choose(),Faker.values()就是我们需要添加的数据的列名来写入,接着就是一个饼状图的命名以及界面的简单排版,居中以及左边距离百分之一,顶部距离百分之十五,我们最后使用了一个page,将三个pie添加到page中,生成为一个命名为马蜂窝全国旅游景点人气排名-餐饮人气排名-娱乐购物人气排名信息饼状图可视化的HTML页面中。热力图数据可视化代码实现图马蜂窝全国旅游热力图TOP30可视化代码这里我们同样先导入数据,这里导入的数据已经是提前排序好保存下来的了,然后根据city_name和total_city_yj将前30的数据放置到data中,再使用geo方法,首先设置地图,为中国地图,数据为data,大小为10,颜色为蓝色,主题是热力图,命名为Geo-HeatMap,生成一个名为马蜂窝全国旅游热力图TOP30的HTML界面。可视化图片展示图4.4.1马蜂窝全国旅游游记TOP10图4.4.2马蜂窝全国旅游景点类标签TOP15图4.4.3马蜂窝全国旅游餐饮类标签TOP15图4.4.4马蜂窝全国旅游购物娱乐类标签TOP15图4.4.5马蜂窝全国旅游景点人气排名TOP15图4.4.6马蜂窝全国旅游餐饮人气排名TOP15图4.4.7马蜂窝全国旅游娱乐购物人气排名TOP15图4.4.8马蜂窝全国旅游热力图TOP30通过可视化图片我们可以知道,在马蜂窝旅游中,呼伦贝尔是最多人去旅游的地方,呼伦贝尔经常被我们称之为大草原,呼伦贝尔位于内蒙古地区,在热力图显示中,我们看可以清楚的看到中国的北部地区有较深颜色的显示,呼伦贝尔也是一个避暑胜地,在夏天的季节,那儿的天气确实十分凉爽,十分适宜人们旅游避暑,骑着马儿欣赏大草原的风光。北京作为首都,当然也是很多人旅游的圣地,拥有众多的旅游景点,故宫、长城、颐和园等等,都是著名的世界遗产,想一睹中华民族辉煌历史的,北京是个不错的旅游地点。接着,我们再来介绍下厦门这座旅游城市从数据中我们可以看到,景点类的城市最多人去的是厦门,餐饮类的城市最多人去的也是厦门,可见厦门也是许多人心目中的旅游胜地,首先是厦门的位置,厦门位于沿海地区,所以这里冬天天气温和,夏天没有酷暑,这对于旅游来说就是一个很不错的条件,不过由于沿海地区,大家旅游的时候,记得避开夏天的台风天气,其次,沿海的风景,十分令人向往,对于内陆地区人们没有到海边玩过的人,这也是一个很大的吸引点,接着,就是美食了,经济发展到现在,人们生活水平提高的同时,对于吃的要求也越来越高,不仅要吃的饱,还得吃得好,而恰恰好厦门的美食数不胜数,在餐饮TOP15的数据中我们就可以发现,厦门的美食就独占其六,沙茶面、海蛎煎、土笋冻、花生汤等等,无一不诱惑着吃货们的味蕾,最后就是价格方面了,厦门的旅游价格还是较低的,对比之前的呼伦贝尔大草原以及北京来说,厦门属于实惠的旅游地点。在娱乐标签这快,丽江是最多人旅游的地方,小桥流水人家的风景以及白雪皑皑的玉龙雪山,都是很不错的旅游地点,但是由于近年来丽江酒吧女的事件,导致丽江旅游名声有了污点,所以丽江旅游时候,要辩真假,火眼金睛分清楚酒吧套路,别中招了。最后,根据热力图的显示,我们可以清楚的看出南方地区以及沿海地区都是比较热门的旅游地点,看来还是很多人喜欢南方的美食,宜人的天气气候以及沿海的风光啊,根据这些数据,你有没有得出你想要去旅游的地方呢?不足之处在做热力图显示的时候,由于Pyecharts库中自带的城市键值对与我们在马蜂窝上爬取下来的城市名称会出现不匹配的现象,所以这里热力图显示只弄了TOP30的数据。另外,我们爬虫是为了分析马蜂窝网站的旅游数据来解释说明旅游的好去处,但是由于今年的新冠病毒的缘故,对旅游行业的冲击十分巨大,很多旅游业都处于闭业状态,导致了马蜂窝网站旅游数据的没有实时更新,所以我们的数据来源只能建立在新冠病毒爆发之前的的数据,中间夹杂着几个月的空白期,也希望有旅游意向的人们,在新冠病毒完全控制下来之前,取消近期旅游项目,避免中招。当疫情结束的时候,再根据本文的数据分析以及热门城市,选择自己喜好的旅游目的地、景点、小吃或娱乐项目,再去放松自己,散散心。期望与总结这几个月来,面对毕业设计的构思与设计,通过不断的网上寻找资料,阅读有关书籍以及对参考文献的阅读理解,一步一步的走过来,终于是将毕业设计与论文成功的实现并完成了。通过这次毕业设计,我又一次的感受到了python这门编程语言的魅力所在,它简单易懂的代码以及丰富的库给我留下了深刻的印象,让简单的操作能够发挥出复杂的作用,让人爱不释手。当然,在毕业设计实现的过程中,也遇到过很多的困难,有时候在寻找页面规则的时候,往往卡在那里好久,久久没有进展,让人无从下手,大大的减缓了毕业设计完成进度,这个时候,我的同学以及导师吴瑞然老师都会帮我指明方向,同学之间的互相讨论,不同的人有不同的思考方式,拥有不同的看法意见,大多时候能够帮助我换种方法去实现目的,让我受益匪浅。吴瑞然老师则会引导我如何去思考和解决这个困难,在这里我要感谢吴瑞然老师对我的帮助,感谢老师给予的资料参考以及建议。这次的毕业设计也让我学到了很多之前不懂的知识,比如python库的运用,有些库是我第一次使用,让我的代码知识储量又一次增加了,也培养了我独立完成任务的能力,树立了自己的自信心。相信自己在以后的编程道路上,能够披荆斩棘,走得更远,学的更多。参考文献[1]郭丽蓉;;基于Python的网络爬虫程序设计[J];电子技术与软件工程;2017年23期[2]刘杰;葛晓玢;闻顺杰;;基于Python的网络爬虫系统的设计与实现[J];信息与电脑(理论版);2018年12期[3]唐琳;董依萌;何天宇;;基于Python的网络爬虫技术的关键性问题探索[J];电子世界;2018年14期[4]彭智鑫;;基于Python的深度网络爬虫的设计与实现[J];信息记录材料;2018年08期[5]潘巧智;张磊;;浅谈大数据环境下基于python的网络爬虫技术[J];网络安全技术与应用;2018年05期[6]魏程程;;基于Python的数据信息爬虫技术[J];电子世界;2018年11期[7]杨国志;江业峰;;基于python的聚焦网络爬虫数据采集系统设计与实现[J];科学技术创新;2018年27期[8]夏天琦;;Python爬虫获取网络图片[J];电子世界;2018年10期[9]郭二强;李博;;大数据环境下基于python的网络爬虫技术[J];计算机产品与流通;2017年12期[10]涂辉;王锋;商庆伟;;Python3编程实现网络图片爬虫[J];电脑编程技巧与维护;2017年23期致谢经过了这几个月来的努力,终于是将程序与论文完成,过程充满了挑战以及坎坷,但是还是通过努力,成功的完成目标,这里首先要感谢的是我的指导老师吴瑞然老师,在选择老师作为导师之后,从任务的要求,到作品的制作过程,老师都有耐心的指导,每次遇到困难,思想转不过弯的时候,老师都会给予意见,为我解惑,受益匪浅,在论文的定稿过程中,老师也会提出自己想法,哪里需要修改,哪里需要添加,有什么不足,是否文字描述太多累赘,都会一一提出意见,都对我帮助很大,这里特别感谢老师给予的帮助。同时也感谢我的同学给予的帮助,同学之间的互相讨论,不同的人有不同的思考方式,拥有不同的看法意见,大多时候能够帮助我换种方法去实现目的,让我受益匪浅,最后,感谢四年以来同学的陪伴以及老师的支持,在此跟你们说一声,谢谢!
HYPERLINK如何选择组装电脑配件
如何选择组装的电脑配件.
第一,选择好CPU平台,就是INTER还是AMD,看你是要配什么样的电脑,高端还是低端的,两个平台都高低的产品。第二,选择主板了,主板的品牌比较多,质量,价格也不一,当你第一步却定了,那么主板也就相应的却定下来了,以INTER为例,只可以选择775接口的主板(早期有478接口的,不推荐),主板的选择主要有两种,一是集成显卡,二是不集成显卡。集成显卡的话,就可以省下显卡的钱,但是对游戏玩家不推荐。那么当然是选择不集成显卡的主板了,而且最好选择一线品牌,如华硕,技嘉等。主板里,还有个蕊片组的选择。关于蕊片组,各个品牌的主板命名有些不一样,主流是INTER965,945,915,VIA的KT890,还有NFORCE4,NFORCE5。等。比较难说清楚。最好是选择INTER的蕊片组,虽然价格会稍高一些。推荐945,技术比较成熟。第三,显卡的选择。显卡主要还是有两类品牌,GEFORCE和ATI,两个品牌有高,中,低的显卡。显卡选择要看你个人喜欢了,预算充足的话,最好是买中,高端的显卡。
第四,就是内存了,内存关系电脑的稳定性。当然是要好一点的。买一线品牌的。现在配电脑,主流是DDR667,DDR800DDR1333第五,显示器的选择,推荐液晶。如何选择硬件组装电脑这是一个老生常谈的问题了,这也是一个让高手们显示自己硬件功底的问题,同时这还是一个让很多新手为之焦头烂额的问题。该怎么配?具体配什么?怎样配才能尽量减小瓶颈?本文就将从内到外,从理论到实践,为朋友们抽丝剥茧一一道来。
一、CPU
作为一台电脑最关键的组成部分,CPU确实起着举足轻重的作用,但体现一台电脑的综合速度,并不是仅仅依靠CPU的,常常看到很多新手们在配电脑的时候,把CPU选的很好,但其他的东西诸如内存、主板、硬盘等都选的不太理想,好像这台电脑速度的快慢就体现在CPU速度的快慢上似的。甚至很多著名的品牌机厂商,都推出过类似“P4+256M内存”的这种跛脚配置。其实对于一般的家用电脑而言,一个真正会配的高手,是不会把大量的钱花在CPU上的。家用电脑,毕竟不是做密集型科学计算用的,它讲求的是多种媒体的配合工作,讲求的是能一边下载文件、一边上网浏览网页、一边听音乐、一边还能打开其他的程序,在这种情况下,提升内存的容量比提升CPU的主频对速度的影响要明显的多。现今的中国家庭用户,很多家长对于电脑一窍不通,他们只听说“奔四”代表着速度快,并不知道整机速度的快慢除了CPU以外,还有很多其他的因素影响着它。但在买电脑的时候,最后做决定并掏钱的人,往往都是这些啥都不懂的家长们,于是就出现了上面的一幕:品牌机厂商为了能有更好的销路、兼容机装机店的销售人员为了能拿到更多的奖金,开始违背良心来配置出这种高主频处理器、低容量内存的跛脚电脑。说严重点,这是属于对消费者的不负责任,是一种商业欺诈行为!同样5000元的配置,高手配出来的赛扬,比新手配出来的P4还要快很多,曾经有一家全球著名的硬件网站在2003年的时候刊登过一篇关于配置家用电脑时各硬件占用总预算百分比的文章,文中很明确的提到了CPU的价钱最好不要超过总预算的10%-15%,我们虽然不能说他肯定完全正确,但至少人家是通过很多调查后得出的结论,有借鉴的理由。反观现在的很多所谓的“低价奔四电脑”、“3999元买P4品牌机”之类的广告,我想说的就是:你花了3999元,只买了一块P4的处理器,其他的什么都没有了!
二、内存
对于配置一台电脑来说,内存是重头戏,容量、速度、类型等等每一项指标都对最终的整机综合速度起着至关重要的影响,尤其是内存的带宽和容量。对于内存带宽而言,很多人都认为400MHz、533MHz前端总线的赛扬四或P4,配单通道的DDR内存就足够了,双通道DDR内存是配合800MHz以上前端总线的P4处理器用的,其实这样就大错特错了,哪怕是最老的赛扬四,都需要双通道的DDR内存才能达到它的带宽!也就是说,你如果选择赛扬四1.8G,必须配合865以上的主板和至少双通道DDR200的内存,才能满足它的带宽要求!稍微计算一下就可以得知:赛扬四1.8G的前端总线是400MHz,它的内存带宽理论值是400MHz×64bit÷8=3.2G/s,但当它装在845系列的主板上时,由于845主板的限制,即使你插上能符合它带宽要求的DDR400内存,也只能运行在DDR266上,这时的内存所能提供的带宽是266MHz×64bit÷8=2.1G/s,比3.2G/s要小很多,即使你通过BIOS里的内存调节选项往上调节一档(也只能调节一档而已),让内存运行在DDR333下,所能提供的带宽也仅仅是333MHz×64bit÷8=2.66G/s,离3.2G/s还是有一定的距离,而内存带宽的降低,能非常明显的降低整机的综合速度,运行任何程序都能明显的感觉出来!所以如果想满足赛扬1.8G处理器的内存带宽要求,你必须要为它配置865以上的主板和双通道的内存才行!P4亦是如此。很多人也许会问:那845系列的主板是配什么处理器的呢?我想回答你的就是:845系列的主板是属于“不能用”的主板,因为处理器永远比主板发展的快,当初Intel造出845系列的芯片组是为了能给当时的赛扬和P4提供一个过渡的平台,不至于让它们成为“没有主板配合”的处理器而已,也是为了能在低端市场分一杯羹,而现今865甚至9xx系列的主板横行的时候,845系列的主板确实是属于“不能用”的主板了,满足不了任何一款处理器的内存带宽,造成性能上的严重低下,试问这种主板你会选择么?即使配台2000多元的超低价电脑,也不要去选择845系列的主板,至少需要865以上的和双通道内存才行,因为内存带宽是一个非常影响系统性能的参数,倘若一味的为了省钱而配置845系列的主板,那就得不偿失了。
内存的容量方面,应每个人对电脑的使用方向不同,容量的要求也是不同的,现在配置的家用电脑,笔者建议:如果不打游戏,或者是打打扫雷、纸牌之类的游戏,平时注重于上网浏览或者是聊天、看电影之类的应用的话,内存容量不应该低于1G;如果是偶尔打打单机游戏或者是网络游戏,内存容量应该选择在2G左右,如果是经常打大型的游戏或是进行HDTV视频编辑等应用,那么4G的内存是必不可少的。
三、主板
一台电脑的稳定性和兼容性,一大部分是看主板的,一款优秀的主板不仅需要拥有上等的用料和优良的做工,还需要拥有合理的走线设计,那些没有技术实力的三、四线主板厂家生产的主板,多数是采用公版走线,而且用料非常差,稳定性不堪一击,这种类型的主板,笔者建议宁愿不买电脑也不要配这种主板,否则以后将会是个淘气的祖宗。对于家庭用户,主板方面一定不能省钱,预算够的话最好能买个一线的主板品牌,如果预算实在不足,二线的主板是底线了,不要再往下选择了,毕竟家用电脑是用来使用的,不是用来整天维修的。再谈到主板的用料,笔者常常看到很多新手在配置主板的时候,貌似老鸟似的说某某品牌的主板好,某某品牌的不好,试问你知道它好在哪里么?不好在哪里么?这个就要看主板的用料了,虽然用料好的主板并不能代表一定是高档主板,但最少能代表它的电气性能出色。举一个很简单的例子吧:有A、B两款主板,A主板的处理器供电滤波电容采用的是日系电容,B主板的处理器供电滤波电容采用的是台系电容,那么基本上可以肯定的是:如果在电源输出电压的波动范围比较大的情况下,A主板就比较能耐得住,而B主板就很容易产生电容鼓包、漏夜等情况。不要小看这小小的电容,笔者从一个开维修店的朋友那里得知,来维修主板的人,有80%的都是这几个小电容损坏,究其原因,就是电源选择的不好,导致了输出电压的不稳定,久而久之最终导致这几个小电容爆浆,并且详细叙述了主板的品牌:“一线厂家的×硕牌主板就很少出现这种情况,但同样为一线厂家的×星牌主板,经常遇到!原因就是前者的大部分主板使用的是日系电容,而后者的大部分主板为了省钱,选用的是台系电容!”厂家的广告不能信,宣传也不能信,看到一个产品的广告之后,你所能相信的唯一一点就是:地球上有这么个产品的存在!然后其他的就统统都不能信了!网上有好多所谓的“评测”文章,都是枪手写的,基本上没有任何参考余地,只能作为一篇小说来读,一款主板的真正性能,只有你自己使用了之后才能知道。厂家为了销量、商家为了利润,他们能把最最垃圾的主板宣传为最顶级的产品,笔者曾经就看到过一款四线品牌的主板厂商,在对其主流主板的广告上说“最优秀的设计、最精湛的工艺、最稳定的性能”……结果一看报价:550元/块……其他的话我也不想多说了,只想问问这家厂商:你这么垃圾的主板都用了三个“最”字,那么华硕的同芯片组主板,售价是你三倍的,应该用什么词语来描述了??中国有一句古话:一分钱一分货,说的非常正确!不要认为价格高的主板就是暴利产品,从市场经济学上说,暴利产品是不会被市场所接受的,之所以他能存活到今天,而且售价依然是这么高,肯定有他的理由,他在做工用料方面肯定比其他品牌的要好很多,成本高所以售价高,在此,笔者奉劝大家一句:买主板千万不要凭侥幸心理,认为自己能花很少的钱买到很好的东西,只有错买的没有错卖的,商家永远都比你精明!主板上面还是老老实实的多花点钱来买个一线产品吧,否则以后有你吃苦的时候!
四、硬盘
现在的电脑,硬盘的速度当之无愧的成为了“第一大瓶颈”,无论你是再高的高手,配电脑的时候也无法消除这个瓶颈的存在,我们只有尽量的减小…再减小……。对于家用电脑的硬盘来说,容量和速度是两个非常重要的参数,容量上而言,笔者建议:如果你的电脑只是上网浏览浏览、偶尔打打小游戏的,那么160G的硬盘是个不错的选择;如果你常常下载软件或电影,那么250G的硬盘是个不错的选择,如果你是个下载狂人,那么400G的硬盘比较适合你;如果你有DV或者是经常编辑大型的视频文件,那么400G×2比较适合你,如果你是个玩HDTV的人,那么恭喜你,400G×4也许你都不够用。对于硬盘容量上的选择,你不能考虑现在是否够用,你应该考虑未来的1年里是否够用,大概的公式是:现在需要的容量×3。也就是说,如果你现在感觉80G的硬盘差不多够用了,那么你就需要买个250G的硬盘。如果你现在感觉120G的硬盘够用了,那么就去买个400G的硬盘吧。硬盘另外的一个参数就是速度,受到内部传输率等诸多因素的限制,一块硬盘的实际传输速度是不可能达到它的接口速度的,现在的并口硬盘基本上都是ATA133了,串口硬盘也都是150了,但民用级硬盘的实际传输速度最快的也还没突破66M/s,所以跟内存相比,硬盘的速度是电脑中最大的瓶颈,那么怎么来减小这个瓶颈呢?于是人们就发明了RAID,就是磁盘阵列(当然RAID不是仅仅为了这个而发明的),用两块一模一样的硬盘来组成RAID0,速度理论上能提高1倍,虽然实际上是不可能达到1倍的,但至少能非常非常明显的感觉到了硬盘速度的提升,笔者建议:如果你买的主板是带有RAID功能的,并且你需要保存的数据不是很重要的话,那么强烈建议你在预算允许的情况下购买两块硬盘来组建RAID0,这将使你能亲身体会到飞机与火车的速度差别!但最好是串口的,如果是并口的话,因为并口走的是PCI总线,由于PCI总线上的设备比较多,所以速度不可能达到比较高的地步,但如果是串口的话,那么硬盘的速度提升将更加明显!
五、显示器
显示器方面,笔者想澄清一个观念:曾经听过非常多的人说液晶显示器保护眼睛,因为没有辐射和闪烁……包括很多业内人士都这么认为的,其实错了,液晶显示器比普通的CRT还要伤眼睛!因为伤眼睛不仅仅是辐射和闪烁,还有对比度、亮度等参数,虽然液晶显示器的辐射和闪烁比CRT要小的多,但它那要命的对比度、那要命的色泽度、还有那大于每平方米300cd的亮度,这些都会对眼睛造成很大的伤害,并且你即使将液晶显示器的亮度和对比度调节到最低,也还是非常的刺眼。德国的一家权威机构做过一项调查:液晶显示器用久了会使人的眼睛感觉到疲倦,甚至头痛等症状,而使用相同时间的CRT显示器,却基本没有这些情况出现。现在的通过TCO03认证的CRT显示器,其实外露的辐射已经相当小了,基本上对人已经没有多大的伤害了,闪烁感也可以通过调节刷新率来降低,笔者实在是搞不懂为什么很多人非要去选择液晶显示器,还非要说液晶显示器不伤眼睛??一个最差的17寸
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青岛恒星科技学院单招职业倾向性考试题库含答案详解(轻巧夺冠)
- 2026年阳光学院单招职业技能考试题库附答案详解(a卷)
- 2026年顺德职业技术学院单招综合素质考试题库附参考答案详解(综合题)
- 2026年陕西省安康地区单招职业倾向性考试题库及答案详解(必刷)
- 2026年陕西省建筑工程总公司职工大学单招职业技能考试题库含答案详解(精练)
- 2026年鹤壁能源化工职业学院单招职业适应性测试题库含答案详解(a卷)
- 2026年陕西机电职业技术学院单招职业技能考试题库附参考答案详解(突破训练)
- 中国电建集团及所属企业2026届校园招聘备考题库及一套参考答案详解
- 2025年中国十五冶金建设集团有限公司招聘备考题库及参考答案详解
- 2025年烟台交运集团招聘备考题库及答案详解(易错题)
- DNA相关基础知识培训课件
- 生物药物概论课件
- 全氟己基辛烷滴眼液-临床用药解读
- 2025年共青团团校考试入团考试题库(附答案)
- 石材工厂管理方案(3篇)
- 虚拟仿真模型管理办法
- 第三单元 名著导读《骆驼祥子》知识清单及练习-统编版语文七年级下册
- 社工考试冲刺培训课件
- GB 15760-2025金属切削机床安全防护通用技术规范
- 矿井通风安全毕业论文
- 笔石古生态位分析-洞察及研究
评论
0/150
提交评论