版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.2爬虫的用途和分类1.1爬虫产生的背景和概念目录1.3爬虫实现原理1.5防爬虫应对策略1.4爬虫爬取网页信息的主要流程1.6爬虫数据采集与挖掘的合规性1.7开发环境的配置爬虫基础和开发环境的配置在当下,互联网大数据在各行各业人员的生活和研究应用中具有重要位置,由于互联网大数据的数据来源和类型更加丰富,数据的流动性和开放性更大,人们越来越需要从海量的数据中寻找自己需要的数据,常用的方式就是利用搜索引擎根据关键字查找自己感兴趣的网站,那么搜索引擎是如何找到这些网站的呢?其实,搜索引擎使用了网络爬虫不停地从互联网爬取网站数据,并将网站镜像保存在本地,从而提供信息检索的功能。本章就对爬虫知识进行初步介绍,让大家对爬虫有基本的了解。1.1.1爬虫产生的背景目前的互联网已经进入大数据时代,通过对大数据分析研究,能够产生极大的商业价值。在互联网与大数据研究中,常见的数据来源有:1政府机构与新闻媒体3企业经营数据2社交媒体与网络4数据平台1.1.2爬虫的概念网络爬虫,又被称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取网络数据信息的程序或者脚本。大部分爬虫都是按“发送请求—获得页面—解析页面—抽取并储存内容”这样的流程来进行的,这其实也是模拟了我们使用浏览器获取网页信息的过程。1.2.1爬虫的用途网络爬虫技术出身于互联网搜索引擎,用于从互联网上可达URL所指向的Web页面或资源采集信息内容。爬虫技术经过较长时间的发展,目前的应用范围变得越来越广。在涉及从互联网上进行大量页面的自动采集时基本都离不开爬虫技术。那爬虫具体可以做什么?下面通过一张图来总结爬虫的常用功能,如图1-1所示。图1-1爬虫的常用功能采集型爬虫延续了搜索引擎爬虫技术,是目前使用最广泛的模式。这种爬虫在搜索引擎爬虫技术的基础上对抓取范围、意图做了不同程度的限定,从而产生了一些新型应用。以下列举一些该类型爬虫的典型使用场景。采集型爬虫A爬虫技术的应用可以分为两大类:监测性爬虫B这类爬虫不是以采集信息为主要目标,并非要采集尽可能多的信息,而是利用爬虫在内容采集和分析方面的能力对服务器的信息内容进行监测,因此对爬虫和服务器的交互能力提出了更多要求。其典型的应用包括应用安全监测和内容安全监测。采集型爬虫的典型使用场景:(1)网络爬虫可以用于金融投资领域,比如可以自动爬取一些金融信息,并进行投资分析等。(2)爬虫可以抓取某个网站或者某个应用的内容,批量提取有用的价值,比如把网页上某一个问题的答案全部抓取到本地并保存,或者搜集众多机票网站的航班价格信息做价格对比。(3)我们比较喜欢的新闻网站可能有几个,每次都要分别打开这些新闻网站进行浏览,比较麻烦。这时就可以利用网络爬虫,将这多个新闻网站中的新闻内容和新闻图片爬取下来,集中进行阅读。采集型爬虫的典型使用场景:(4)平常我们在浏览网页上的信息的时候,会发现有很多广告。同样可以利用爬虫将对应网页上的相关信息爬取过来,这样就可以自动过滤掉这些广告,方便对信息的阅读与使用。(5)在进行营销活动时,如何找到目标客户以及目标客户的联系方式是一个关键问题。监测型爬虫的典型的应用包括应用安全监测和内容安全监测。(1)应用安全监测:应用层安全是网络信息安全的重要问题之一,这类安全与具体应用有密切关系,而随着部署在互联网的应用越来越多,应用安全问题变得愈发突出。作为互联网应用的主流客户端,浏览器需要人为的点击和数据输入,并且所有的执行可能会对宿主计算机产生安全威胁,因此在应用安全监测方面的效率和及时性会受到很大影响。基于网络爬虫技术,则可以在很大程度上改变这种情况。网页挂马的监测就是在爬虫获取页面后对页面中所包含的动态脚本进行特征分析。SQL注入是另一种常见的应用安全问题,可以通过爬虫技术向所要监测的Web服务器发起查询命令,并根据返回结果进行安全判断。监测型爬虫的典型的应用包括应用安全监测和内容安全监测。(2)内容安全监测:内容安全是网络信息安全的最高层次,敏感信息、泄密信息等的监测需要从内容层面上分析其安全属性,通常这类信息的监测需要在当事人不知情的情况下进行,因此采用自动化的爬虫技术,并结合适当的内容分析技术,是合理的选择。1.2.2爬虫的分类网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用爬虫和聚焦爬虫1累积式爬虫和增量式爬虫2表层爬虫和深层爬虫31.通用爬虫和聚焦爬虫(1)通用爬虫通用爬虫又称全网爬虫,它将爬取对象从一些种子URL扩充到整个网络,主要用途是为门户站点搜索引擎和大型Web服务提供商采集数据。通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列初始URL集合几个部分。(2)聚焦爬虫聚焦爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关的页面的网络爬虫。与通用爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,从而极大地节省了硬件和网络资源;保存的页面也由于数量少而更新快,可以很好地满足一些特定人群对特定领域信息的需求。2.累积式爬虫和增量式爬虫(1)累积式爬虫累积式爬虫是指从某一个时间点开始,通过遍历的方式爬取系统所允许存储和处理的所有网页。在理想的软、硬件环境下,经过足够的运行时间,采用累积式爬取的策略可以保证爬取到相当规模的网页集合。但由于Web数据的动态特性,集合中网页的被爬取时间点是不同的。页面被更新的情况也不同,因此累积式爬取到的网页集合事实上并无法与真实环境中的网络数据保持一致。(2)增量式爬虫增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构包含爬行模块、排序模块、更新模块、本地页面集合、待爬取URL集合及本地页面URL集合。3.表层爬虫和深层爬虫(1)表层爬虫爬取表层网页的爬虫叫作表层爬虫。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。(2)深层爬虫爬取深层网页的爬虫就叫作深层爬虫。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。例如,用户注册后内容才可见的网页就属于深层网页。1.3.1通用爬虫工作原理通用爬虫是一个自动提取网页的程序,它为搜索引擎从网络上下载网页,是搜索引擎的重要组成部分。通用爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在爬取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的停止条件。如图1-2所示为通用爬虫爬取网页的流程。图1-2通用爬虫爬取网页的流程1.3.2聚焦爬虫工作原理与通用爬虫相比,聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接,并将其放入等待爬取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要爬取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,如图1-3所示。图1-3聚焦爬虫工作原理1.3.2聚焦爬虫工作原理相对于通用网络爬虫,聚焦爬虫还需要解决3个主要问题:(1)对爬取目标的描述或定义。根据爬取需求定义聚焦爬虫的爬取目标,并进行相关的描述。(2)对网页或数据的分析与过滤。(3)对URL的搜索策略。图1-3聚焦爬虫工作原理爬虫爬取网页信息的主要流程如图1-4所示。具体爬取步骤如下:(1)在互联网中选取一些网页,将这些网页的链接地址作为种子URL。(2)将这些种子URL放入待爬取URL队列中。(3)爬虫从待爬取URL队列(先进先出的数据结构)中依次读取URL。(4)爬虫通过DNS解析URL,把链接地址转换为网站服务器所对应的IP地址,并将IP地址和网页相对路径名称交给网页下载器,网页下载器负责页面内容的下载。(5)网页下载器下载相应网页的内容到本地。图1-4爬虫爬取网页信息的主要流程(6)将下载到本地的网页存储到数据库中,等待后续处理;与此同时,将已经下载的网页URL放入已爬取的队列中,这个队列记载了爬虫系统已经下载过的网页URL,避免网页重复爬取。(7)对于刚下载的网页。从中抽取出所包含的所有链接信息,并在已爬取URL中检查其是否被爬取过,如果还未被爬取过,则将这个URL放入待爬取URL队列中。(8)对于待爬取URL队列中的网页进行循环抓取。如此重复(3)~(7)步,形成循环,直到待爬取URL队列为空。随着互联网的高速发展,提供公众服务的站点越来越多,能够被公开访问到的Web页面以倍速增加,这些页面之中所包含的信息是普通搜索引擎和其他爬虫采集的目标。由此,互联网上采集数据的爬虫越来越广泛,对于某个Web站点来说,每天可能经常会有不同的爬虫“光顾”。如今主流的搜索网站以及门户网站,都有自己的搜索引擎,而爬虫技术是搜索引擎的关键组成部分。一些智能的搜索引擎爬虫的爬取频率比较合理,不会消耗过多的网站资源。而且通常情况下,Web站点会在其根目录下放置robots.txt文件,以提醒爬虫遵守Robots协议(RobotsExclusionProtocol)的约束,例如哪些页面可以抓取,哪些页面不能抓取,然而并非所有的采集者都能够遵循该协议。其原因可能是爬虫程序设计得很糟糕,经常并发上百个请求循环重复爬取,这种爬虫对中小型网站造成的访问压力非常大,很可能会导致网站访问速度缓慢,甚至无法访问,当然也可能这种爬取本身就是恶意的,一般统称此类爬虫为“不友好的爬虫”或恶意爬虫。不友好的爬虫往往会导致Web站点服务压力陡增,严重时会导致类似的拒绝服务(DoS)攻击。因此,Web站点的管理者往往需要提防不友好爬虫所导致的各种问题。从这个角度来看,反爬虫技术是一种十分必要的技术。基于正常用户、友好爬虫、恶意爬虫之间的差异,目前使用的反爬技术主要有以下几种。1.通过IP与访问间隔等请求模式的识别3.通过cookies信息识别5.通过对客户端是否支持JS的分析来识别7.页面资源是否加载2.通过Headers内容识别4.通过验证码识别6.通过是否遵循Robots协议来识别是否为友好的爬虫对于采取了反爬虫措施的网站,爬虫程序需要针对这些措施采取相应的应对策略,才能成功地爬取到网站上的数据。常用的应对策略包括以下几种:1.设置User-agent2.使用代理IP3.降低访问频率随着网络爬虫技术应用的普及,网络爬虫的应用场景越来越多,但是一些不合理使用网络爬虫技术进行大数据采集的案例也不断出现,甚至导致了相应的法律问题。因此,网络爬虫能以什么方式抓取什么数据这个问题是值得考虑的,其他类似问题还包括:什么样的数据可以存储在本地、什么样的数据可以共享或出售给他人,这些统称为大数据技术及应用的合规性。首先爬虫可以抓取具有访问权限的数据,这应该是其边界之一。访问权限可以从数据是否公开、页面是否许可来判断。爬虫对公开的数据当然具备抓取权限,公开或不公开的判断依据是否需要以一定用户身份登录后才能看到数据,并且以其他用户身份登录后是看不到这些的。在各类不公开数据的采集中,容易引起纠纷的是用户个人信息,包括个人身份信息、行踪轨迹、联系方式等。在采集这类数据前,爬虫应当获得用户授权。未公开的网络数据,爬虫程序无权获取,可能会被认定为非法获取计算机信息系统数据罪。在《中华人民共和国刑法》第二百八十五条提到非法获取计算机信息系统数据罪,是指侵入国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据。这里“侵入”是指行为人采用破解密码、盗取密码、强行突破安全工具等方法,在没有得到许可时违背计算机信息系统控制人或所有人意愿进入其无权进入的计算机信息系统中。典型的途径是破解App的加密算法或网络交互协议、调用规则和参数,从而使爬虫突破权限许可获取数据。1.7.1在Windows上安装Python进入Python的官网“/”,进入后的页面如图1-5所示。图1-5Python官网选择菜单栏中的Downloads→Windows选项,可以看到多个版本的Python发布,下载资源页面如图1-6所示。图1-6下载资源页面选择最新版本(LatestRelease)下载到本地并进行安装,注意选择自己电脑对应的系统位数,32位或64位。第一次安装直接选择InstallNow,注意勾选最下面的选项“AddPython3.10toPATH”,这个选项将自动帮我们将Python配置到Windows系统环境变量中,方便后续直接使用,如图1-7所示。安装成功后,出现如图1-8所示的界面表示安装已经成功。图1-7Python安装界面图1-8Python安装成功提示页面打开“开始”菜单,就能看到Python3.x的应用程序,其中有一个IDE程序,用户单击它就可以开始在交互式窗口中使用PythonShell,如图1-9所示。图1-9PythonIDE界面1.7.2PyCharm的安装与使用虽然Python自带的IDEShell可以帮助我们完成一些基础开发,但是它不是唯一的开发工具。许多功能强大的特定编辑器或第三方集成开发环境(IDE)可以帮助我们更好地编程。这里介绍一个目前主流的IDE———PyCharm,由JetBrains公司出品的Python开发工具。用户可以在其官方网址进行软件下载。/pycharm/进入官网后,选择屏幕中间的DOWNLOAD,PyCharm下载界面如图1-10所示。图1-10PyCharm下载界面图1-11PyCharm安装程序图1-12PyCharm创建新项目在正式使用之前,可以先在设置界面对PyCharm进行一些基本设置。例如在Appearance&Behavior界面中改变背景主题与字体大小,如图1-13、图1-14所示。图1-13PyCharm改变背景主题在正式使用之前,可以先在设置界面对PyCharm进行一些基本设置。例如在Appearance&Behavior界面中改变背景主题与字体大小,如图1-13、图1-14所示。图1-14设置代码的字体和大小在运行代码之前,我们经常还需要指定项目的Python解释器,如图1-15所示。图1-15设置项目Interpreter当我们需要使用当前系统中未安装的包或者类库时,我们可以直接点击当前页面右上角的“+”按钮,搜索想要安装的包名,直接进行安装,如图1-16所示。图1-16类库添加界面本章概括性地讲解了网络爬虫的概念,并简要介绍了爬虫的用途和分类,还介绍了爬虫爬取网页的流程,从而让读者对爬虫的工作有大致的印象,接着介绍了防爬虫的一些应对策略,以及扩展分析了爬虫大数据采集的合规性,最后介绍了搭建开发环境的简要步骤。由于后面章节将借助于Chrome浏览器分析待爬取页面,读者还需安装好Chrome浏览器,为下一步学习做好准备。2.2超文本2.1URL(统一资源定位符)目录2.3HTTP与HTTPS2.5Robots协议2.4HTTP网络请求原理2.6网页基础2.7Cookie与Session网页前端基础网络爬虫爬取数据的过程可以理解为模拟浏览器操作的过程。因此使用网络爬虫爬取数据,了解Web页面及相关技术以及网页的请求原理是非常有必要的。统一资源定位符(UniformResource
Locator,URL)是互联网上标准资源的地址,一个URL唯一标识一个互联网文件(资源),通过与之对应的URL即可获得该资源。URL格式一般如下:协议类型://服务器地址[:端口号]/路径/文件名[参数=值]其中[]部分的参数是可选的,例如:/usercenter/paper/show?paperid=868d5f7902c0cc3f4c498cef4fb0dfacURL地址由协议头、服务器地址和端口、文件路径三部分组成。2.1.1协议头协议头(ProtocolHead)指定使用的传输协议,用于告诉浏览器如何处理将要打开的文件,不同的协议表示不同的资源查找以及传输方式。URL常用协议见表2-1。名称代表类型示例HTTP超文本传输协议,访问远程网络资源/s?ie=UTF-8&wd=baiduHTTPS加密的安全SSL传输协议,访问远程网络资源/s?ie=UTF-8&wd=baiduFile访问本地计算机资源file://Windows/User/Desktop/test.htmlFTP访问共享主机资源00/User表2-1URL常用协议其中,最常用的是HTTP协议,由协议头http指定链接地址。2.1.2服务器地址和端口服务器地址指存放资源的服务器的主机名或者IP地址,其目的在于标识互联网的唯一一台计算机,并通过这个地址找到这台计算机。端口(Port)是在地址和冒号后面的数字,用于标识一台计算机上运行的不同程序。每个计算机程序都对应一个或多个特定的端口号,例如HTTP程序的默认端口号为80,HTTPS程序的默认端口号为443。2.1.2服务器地址和端口IP地址用来给Internet上的每台计算机一个编号,但是IP地址不容易记忆,而且服务器的物理IP地址是有可能发生改变的。为此,人们又发明了域名来替代IP地址访问服务器的网站。例如,使用百度公司所在的IP地址为07,但是这个地址不易记忆,人们更习惯用域名网址
访问。2.1.3文件路径文件路径(Path)是由0个或者多个“/”符号隔开的字符串,一般用于指定本次请求的资源在服务器中的位置。浏览器中的网页是由超文本解析而成的。网页源代码是一系列HTML代码,里面包含一系列标签(如img显示图片、p显示段落),浏览器解析这些标签后形成了我们平时看到的网页。网页的源代码比起普通文本能够描述更多的内容,包括网页的样式、网页的构成等,这些网页的源代码HTML就被称为超文本。超文本传输协议(HyperTextTransferProtocol)是互联网上使用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。HTTP基于TCP/IP协议的应用层协议,采用请求/响应模型。通过使用Web浏览器、网络爬虫或其他工具,客户端向服务器上的指定端口(默认端口为80)发送一个HTTP请求。服务器根据接收到的请求向客户端发送响应信息。2.3.1HTTP自1991年第一个版本的HTTP协议HTTP0.9正式提出以来,HTTP协议已经经过了3个版本的演化,目前大部分网页使用HTTP1.1作为主要的网络通信协议。1.HTTP0.92.HTTP1.03.HTTP1.14.HTTP21.HTTP0.9HTTP0.9是第一个版本的HTTP协议,发布于1991年。HTTP0.9只允许客户端发送GET这一种请求,不支持请求头,因此客户端无法向服务器端传递太多消息。该协议规定服务器只能响应HTML格式的字符串,即纯文本,不能响应其他的格式,该协议只用于用户传输HTML文档。服务器响应后TCP网络连接就会关闭。即使请求的网页不存在,服务器也不会返回任何错误码。2.HTTP1.01996年,HTTP协议的第二个版本HTTP1.0发布。HTTP1.0是以HTTP0.9为基础发展起来的,并且在HTTP0.9的基础上增加了许多新的内容。(1)HTTP1.0增加了请求方法。HTTP1.0支持GET、POST、HEAD几种请求方法,每种方法规定的客户端与服务器之间通信的类型不同。(2)HTTP1.0扩大了可处理的数据类型,引入了MIME(MultipurposeInternetMailExtensions)机制,除了纯文本之外,还可以传输图片、音频、视频等多媒体数据。2.HTTP1.0(3)在处理TCP网络连接时与HTTP0.9相似,但HTTP1.0在请求头中加入了Connection:keep-alive,要求服务器在请求响应后不要关闭TCP连接,实现TCP连接复用,可以避免Web页面资源请求时重新建立TCP连接的性能降低。3.HTTP1.1HTTP1.1是目前使用最广泛的HTTP协议版本,于1997年发布。HTTP1.1与之前的版本相比,改进主要集中在提高使用性能、安全性以及数据类型处理等方面。(1)与HTTP1.0最大的区别在于HTTP1.1默认采用持久连接。客户端不需要在请求头中特别声明(Connection:keep-alive),但具体实现是否声明依赖于浏览器和Web服务器。请求响应结束后TCP连接默认不关闭,降低了建立TCP连接所需的资源和时间消耗。3.HTTP1.1(2)HTTP1.1支持管道(Pipelining)方式,可以同时发送多个请求。在发送请求的过程中,客户端不需要等待服务器对前一个请求的响应就可以直接发送下一个请求。管道方式增加了请求的传输速度,提高了HTTP协议的效率。但是,服务器在响应时必须按照接收到请求的顺序发送响应,以保证客户端收到正确的信息。(3)HTTP1.1添加了Host(请求头)字段。随着虚拟主机这种应用架构技术的发展,在一台物理服务器上可以存在多个虚拟主机,这些虚拟主机共享一个IP地址。HTTP1.1在请求头中加入Host(请求头)字段,指出要访问服务器上的哪个网站。4.HTTP2HTTP2于2015年发布,在实现与HTTP1.1完全语义兼容的基础上,它在性能上实现了大幅提升,但尚未真正应用。(1)HTTP2允许客户端与服务器同时通过同一个连接发送多重请求/响应消息,实现多路复用。HTTP2加入了二进制分帧层,HTTP消息被分解为独立的帧。帧可以交错发送,然后再根据流标识符在接收端重新拼装,使得HTTP2可以在一个TCP连接内同时发送请求和响应。4.HTTP2(2)HTTP2压缩大量重复的首部信息,提升通信效率。HTTP每一次通信都会携带首部,当一个客户端想从一个服务器请求许多资源时,可能会出现大量重复的请求头信息。特别是在HTTP1.1中,请求头信息以纯文本的形式发送,大量重复的请求头信息重复传输对网络运输资源的消耗很大。2.3.2HTTPSHTTPS(HyperTextTransferProtocolSecureSocketLayer,超文本传输安全协议)是一种通过计算机网络进行安全通信的传输协议,简单来说,HTTPS是HTTP协议的安全版本。HTTP报文使用明文发送,传输的信息很容易被监听和篡改;HTTPS则使用SSL/TLS加密的HTTP协议,可以保护传输数据的隐私和完整性,同时实现服务器的身份验证。SSL(SecureSocketsLayer,安全套接层)是介于HTTP与TCP之间的安全协议,SSL在传输层同时使用对称加密以及非对称加密对网络连接进行加密。其中,对称加密算法的加密与解密使用同一个密钥;非对称加密算法的加密与解密使用不同的两个密钥,即公开密钥(PublicKey,简称公钥)和私有密钥(PrivateKey,简称私钥)。非对称加密与对称加密相比安全性更高,但是加密与解密花费的时间长、速度慢。因此,在准备建立连接时,SSL使用服务器的证书(公钥)将对称密钥非对称加密,保证对称密钥的安全;在连接建立后,SSL对数据量较大的传输内容使用对称加密,提高加密效率。传输层安全协议(TransportLayerSecurityProtocol,TLS)是SSL3.0的后续版本,与SSL的内容大致相同,因此很多书本将TLS与SSL并列称呼,即SSL/TLS。HTTPS相当于在HTTP的基础上使用SSL/TLS对传输的数据进行加密,因此HTTPS与HTTP交互最大的区别在于,使用HTTPS传输数据之前需要客户端与服务器进行一次SSL握手,在握手过程中将确立双方加密传输数据的密码信息。浏览器的主要功能是向服务器发出请求,并在窗口中显示选择的网络资源。HTTP是一套计算机通过网络进行通信的规则,它由两部分组成:客户端请求消息和服务器端响应消息,通信过程如图2-1所示。图2-1HTTP通信过程2.4.1浏览器显示网页过程当用户在浏览器的地址栏中输入一个URL地址访问后,浏览器会向HTTP服务器发送HTTP请求。常用的HTTP请求包括GET和POST两种方式。例如,当在浏览器输入URL“https//”时,浏览器发送一个Request请求去获取
的HTML文件,服务器把包含了该文件内容的Response对象发送回浏览器。2.4.1浏览器显示网页过程浏览器分析Response对象中的HTML文件内容。发现其中引用了很多其他文件,包括Image文件、CSS文件、JS文件等。浏览器会自动再次发送Request去获取这些图片、CSS文件、JS文件。所有的文件都下载成功后,浏览器会根据HTML语法结构,将网页完整地显示出来。2.4.2客户端HTTP请求格式在网络传输中,HTTP协议非常重要,该协议规定了客户端和服务器端请求和应答的标准。HTTP协议能保证计算机正确、快速地传输超文本文档,并确定了传输文档中的哪一部分及哪一部分内容首先显示(如文本先于图形)等。根据HTTP协议的规定,客户端发送一个HTTP请求到服务器的请求消息,由请求行、请求头部、空行以及请求数据四部分组成。图2-2所示为HTTP请求消息一般格式。图2-2HTTP请求消息一般格式下面是一个典型的HTTP请求实例:RequestURL:/RequestMethod:GETStatusCode:200
OKRemoteAddress::443ReferrerPolicy:strict-origin-when-cross-originAccept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding:gzip,deflate,brAccept-Language:zh-CN,zh;q=0.9Cache-Control:max-age=0Connection:keep-aliveHost:User-agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.45Safari/537.36Cookie:PSTM=1489109837;BIDUPSID=F59C5BA444A9117E3A67BE19F0BA03CA;sug=3;sugstore=1;ORIGIN=2;bdime=0;__yjs_duid=1_66ce6e83564c9fbdb5f385baf636b6bf1620265366190;MCITY=-%3A;BD_UPN=12314753;BAIDUID=C4BA7704ED735A2C38B99BF2CA8A3A32:FG=1;BDORZ=B490B5EBF6F3CD402E515D22BCDA1598;BDSFRCVID=p_AOJeC62lUlBNrHR32kejFIl_0ww97TH6aoOGA8Y5WzfWDyhRoOEG0PoM8g0Ku-y8-5ogKKy2OTH9tF_2uxOjjg8UtVJeC6EG0Ptf8g0f5;H_BDCLCKID_SF=JRItoCDKJDvbfP0kKPcHKR0VMeT22-uXKK_sQU7pBhcqEIL4hhoSLxCXybKeJtn-2ecAWUAMb-0BMUbSj4QoXU-FebutLbThQ2n8BUoOBh5nhMJvXj7JDMP0qquOe6Qy523iXCovQpPBfhQ3DRoWXPIqbN7P-p5Z5mAqKl0MLPbtbb0xb6_0-nDSHH-fJjLt3j;BDSFRCVID_BFESS=p_AOJeC62lUlBNrHR32kejFIl_0ww97TH6aoOGA8Y5WzfWDyhRoOEG0PoM8g0Ku-y8-5ogKKy2OTH9tF_2uxOjjg8UtVJeC6EG0Ptf8g0f5;H_BDCLCKID_SF_BFESS=JRItoCDKJDvbfP0kKPcHKR0VMeT22-uXKK_sQU7pBhcqEIL4hhoSLxCXybKeJtn-2ecAWUAMb-0BMUbSj4QoXU-FebutLbThQ2n8BUoOBh5nhMJvXj7JDMP0qquOe6Qy523iXCovQpPBfhQ3DRoWXPIqbN7P-p5Z5mAqKl0MLPbtbb0xb6_0-nDSHH-fJjLt3j;delPer=0;BD_CK_SAM=1;BAIDUID_BFESS=F4279506E1A037EBDC944A166E24D572:FG=1;BD_HOME=1;PSINO=2;channel=baidusearch;baikeVisitId=4516e98d-9f79-4918-8eda-f085a3c5bbee;Hm_lvt_aec699bb6442ba076c8981c6dc490771=1637307149,1639231550,1639295942;Hm_lpvt_aec699bb6442ba076c8981c6dc490771=1639295942;COOKIE_SESSION=10168_0_8_8_13_21_0_0_7_8_0_5_10236_0_3_0_1639295943_0_1639295940%7C9%2321984276_33_1639226294%7C9;H_PS_645EC=21a2xSKynJr8e6tzkqP%2FdNXxQb78R3%2ByILVgbiQVvwyy0VP9ikdzL5nUGkQ;ab_sr=1.0.1_YTk3OTZkYTgzMWMzN2Y5ZWM3NGU5MWU5MTNmNGQ2Yzc3NTczNGRjN2YzN2I0ZDY5MWI5OTU1MGIwNzhiM2RhMjQyNDQ2MGVhYWE0ZmQzYzc3MjQ5Y2Y0NjlmM2VmMTAyNTdhYzg4NWI1ZmQxMGUwODVmMDkwOTc3OGEyZWMwODk1ODkyYTEzYWE1MjQ1N2M3MTZhMDY0YjAzNDU3MWJjZQ==;BDRCVFR[w2jhEs_Zudc]=I67x6TjHwwYf0;H_PS_PSSID=35411_34439_35105_35240_34584_34518_34579_35329_26350;BA_HECTOR=840k2k212k0l802htv1grbelt0q上例中前两行为请求行,包含了请求方法、URL地址,代码如下:RequestURL:/RequestMethod:GET其中,GET是请求方法,/是URL地址,不同请求方法的含义见表2-2。
1.请求行表2-2不同请求方法的含义序号方法含义1GET请求指定的页面信息,并返回实体主体2POST向指定资源提交数据进行处理请求,例如表单的提交、资源的上传,数据被包含在请求实体中。POST请求可能会导致新的资源的建立和已有资源的修改3HEAD类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头4PUT在这种请求方式下,从客户端向服务器传送的数据取代指定的文档内容5DELETE请求服务器删除指定的页面6CONNECTHTTP1.1协议中预留给能够将连接改为管道方式的代理服务器7OPTIONS允许客户端查看服务器的性能8TRACE回显服务器收到的请求,主要用于测试或诊断其中,最常用的请求方法是GET和POST,两者的区别在于:(1)GET是从服务器上获取指定页面信息,POST是向服务器提交数据并获取页面信息。(2)GET请求参数都显示在URL上,服务器根据该请求所包含URL中的参数来产生响应。由于参数都会显示在地址栏中,有一定的安全风险。(1)Host(主机和端口号):指定被请求资源的Internet主机和端口号,对应网址URL中的Web名称和端口号,通常属于URL的Host部分。(2)Connection(连接类型):表示客户端与服务器的连接类型。在通常情况下,连接类型的对话流程如下:①Client发起一个包含Connection:keep-alive的请求(HTTP1.1使用keep-alive为默认值)。
2.请求报头②Server收到请求后:•如果Server支持keep-alive。回复一个包含Connection:keep-alive的响应,不关闭连接。•如果Server不支持keep-alive。回复一个包含Connection-close的响应,关闭连接。③如果Client收到包含Connection:keep-alive的响应,则向同一个连接发送下一个请求,直到一方主动关闭连接。
2.请求报头(3)User-agent(浏览器名称):标识客户端身份的名称,通常页面会根据不同的User-agent信息自动做出适配,甚至返回不同的响应内容。(4)Accept(传输文件类型):指浏览器或其他客户端可以接受的MIME(Multipurpose
InternetMailExtensions,多用途互联网邮件扩展)文件类型,服务器可以根据它判断并返回适当的文件格式。Accept报头的示例如下:Accept:*/*//表示什么都可以接受Accept:image/gif//表明客户端希望接受GIF图像格式的资源
2.请求报头Accept:text/html//表明客户端希望接受HTML文本Accept:text/html,application/xhtml+xml;q=0.9,image/*;q=0.8//表示浏览器支持的MIME类型分别是HTML文本、XHTML和XML文档、所有的图像格式资源其中:q:表示权重系数,范围是0=<q<=1。q值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序;若被赋值为0,则表示浏览器不接受此内容类型。
2.请求报头(5)Referer(页面跳转来源):表明产生请求的网页来自哪个URL。用户是从该Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的等。(6)Accept-Encoding(文件编解码格式):指出浏览器可以接受的编码方式。编码方式不同于文件格式,其作用是压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。许多情形下可以减少大量的下载时间。例如:Accept-Encoding:gzip;q=1.0,identity;q=0.5,*;q=0
2.请求报头如果有多个Encoding同时匹配,按照q值顺序排列,本例中按顺序支持gzip、identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。如果请求消息中没有设置这个报头。通常服务器假定客户端不支持压缩,直接返回文本。(7)Accept-Language(语言种类):指出浏览器可以接受的语言种类。如en或en-us指英语。zh或zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。如果目标网站支持多个语种,可以使用这个信息来决定返回什么语言。
2.请求报头(8)Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现模拟登录。(9)Content-Type(POST数据类型):指定POST请求中用来表示的内容类型。
2.请求报头2.4.3服务器HTTP相应格式HTTP响应报文由四部分组成,分别是状态行、响应报头、空行和响应正文。例如:Cache-Control:privateConnection:keep-aliveContent-Encoding:gzipContent-Type:text/html;charset=utf-8Date:Sun,12Dec202109:06:07GMT2.4.3服务器HTTP相应格式Expires:Sun,12Dec202109:05:08GMTServer:BWS/1.1Set-Cookie:BDSVRTM=0;path=/Set-Cookie:BD_HOME=1;path=/Set-Cookie:H_PS_PSSID=35411_34439_35105_35240_34584_34518_34579_35329_26350;path=/;domain=.
Strict-Transport-Security:max-age=1728002.4.3服务器HTTP相应格式Traceid:1639299967234089089017384326274585067186Transfer-Encoding:chunkedX-Frame-Options:sameoriginX-Ua-Compatible:IE=Edge,chrome=1响应由服务器端返回给客户端,可以划分为响应状态码、响应报头和响应体,下面详细介绍HTTP响应中的响应报头和响应状态码的含义。理论上所有的响应报头信息都应该是回应请求头的,但是服务器端为了效率和安全,包含其他方面的考虑,会添加相对应的响应头信息。常用的响应报头和取值如下:(1)Cache-Control:must-revalidate,no-cache,private。这个报头值告诉客户端,服务器端不希望客户端缓存资源,在下次请求资源时,必须重新请求服务器,不能从缓存副本中获取资源。Cache-Control是响应头中很重要的信息,当客户端请求报头中包含Cache-Control:max-ape=0请求,明确表示不会缓存服务器资源时,Cache-Control作为回应信息,通常会返回no-cache,意思就是说“不缓存”。
1.响应报头当客户端在请求头中没有包含Cache-Control时,服务器端往往会根据不同的资源指定不同缓存策略。例如,oschina缓存图片资源的策略就是Cache-Control:max-age=86400,意思是从当前时间开始,在86400秒的时间内,客户端可以直接从缓存副本中读取资源,而不需要向服务器请求。(2)Connection:keep-alive。该报头告诉客户端服务器的TCP连接也是一个长连接,客户端可以继续使用这个TCP连接发送HTTP请求。(3)Content-Encoding:gzip。该报头的取值告诉客户端,服务器端发送的资源是采用gzip编码的。客户端看到这个信息后,应该采用gzip对资源进行解码。(4)Content-Type:text/html;charset=UTF-8。这个报头值告诉客户端资源文件的类型及字符编码。客户端需要使用UTF-8格式对资源进行解码,然后对资源进行HTML解析。通常人们会看到有些网站出现乱码,往往就是服务器端没有返回正确的编码。(5)Date:Sun,12DEC202121:58:30GMT。该报头表示服务器端发运资源时的服务器时间。GMT是格林尼治所在地的标准时间。HTTP协议中发送的时间都是GMT的,这主要是解决在互联网上,不同时区在相互请求资源时的时间混乱问题。(6)Expires:Sun,12Dec202109:05:08GMT。这个响应报头表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。(7)Server:BWS/1.1。这个报头表示服务器对应的版本,仅用于告诉客户端和服务器相关的信息。(8)Transfer-Encoding:chunked。该响应报头告诉客户端服务器发送资源的方式是分块发运的。一般分块发送的资源都是服务器动态生成的。在发送时还不知道发送资源的大小,所以采用分块发送。每一个块都是独立的,独立的块都能标识自己的长度。最后一块的长度是0,当客户端读到这个0长度的块时,就可以确定资源已经传输完。响应状态码由3位数字组成,其中第1位数字定义了响应的类别,有5种可能取值。常用的响应状态码如下所示:(1)100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。(2)200~299:表示服务器成功接收请求并已完成整个处理过程。常用状态码为200(表示OK,请求成功)。(3)300~399:为完成请求,客户需进一步细化请求。例如,请求的资源已经移动到一个新地址,常用状态码包括302(表示所请求的页面已经临时转移至新的URL)、307(表示临时重定向)和304(表示使用缓存资源)。
2.响应状态码(4)400~499:客户端的请求有错误,常用状态码包括404(表示服务器无法找到被请求的页面)和403(表示服务器拒绝访问,权限不够)。(5)500~599:服务器出现错误,常用状态码为500(表示服务器遇到错误,无法完成请求)。互联网上的Web页面可以分为两种:一种是用户可以直接通过浏览器进行访问与内容查看,例如普通的门户网站、新闻网站等;另一种是用户需要进行验证和登录等识别手段以进一步访问更多页面,如一些社交媒体网站和收费网站等。对于网络爬虫而言,可以顺利地访问和收集第一种页面,也可以通过一些设置与技术手段访问第二种页面。因此,互联网上的大部分页面都可以被搜索引擎进行收录并提供给用户进行搜索,但是,某些临时性的网站或私密性网站并不希望自己的内容被搜索引擎收录或者永久存储。2.5.1Robots协议的内涵网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。因此Robots的用法有两种:一种是告诉搜索引擎哪些页面不能抓取,其余的默认可以抓取;另一种是告诉搜索引擎只能抓取哪些页面,其他的页面默认不能抓取。这些访问许可的定义都存储在网站的一个名为robots.txt的文件中,该文件会被存储在网站的根目录文件下,并永远可以被公开访问。User-agent表示定义哪个搜索引擎。User-agent后面为搜索机器人名称,如果是“*”号,则泛指所有的搜索引擎机器人;如果是User-agent:BaiduSpider,则定义百度蜘蛛。常见的搜索引擎都有自己的网络爬虫,许多大型搜索网站针对爬取数据类型的不同还有多个爬虫,常见爬虫见表2-3。
1.User-agentUser-agent表示定义哪个搜索引擎。User-agent后面为搜索机器人名称,如果是“*”号,则泛指所有的搜索引擎机器人;如果是User-agent:BaiduSpider,则定义百度蜘蛛。常见的搜索引擎都有自己的网络爬虫,许多大型搜索网站针对爬取数据类型的不同还有多个爬虫,常见爬虫见表2-3。
1.User-agent表2-3常见爬虫名称功能归属Googlebot网页爬虫GoogleGooglebot-image图片爬虫GoogleGooglebot-video视频爬虫GoogleBaiduspider网页爬虫兼移动爬虫百度Baiduspider-image图片爬虫百度Baiduspider-video视频爬虫百度Baiduspider-news新闻爬虫百度360spider网页爬虫兼移动爬虫好搜Iaskspider爱问爬虫新浪YodaoBot综合爬虫网易有道Disallow表示禁止爬取。Disallow后面的参数是不允许访问的文件目录参数。服务器内路径包含指定字符的内容,都不允许爬取。例如:Disallow:/Disallow:/?+*Disallow:/表示所有内容都不能被爬取,因为所有的路径都会包含“/”。Disallow:/?+*表示路径中带有“/?+”的路径都不能爬取,“*”表示匹配所有。所有没有被禁止的路径,都代表可以被爬取。和Disallow相对应的就是Allow,表示当前页面中允许爬取的路径。所有Allow定义外的路径,都不可以爬取。
2.Disallow和Allow2.5.2经典robots.txt例子这里取四个记录,分别表示百度对于Baiduspider、Googlebot、MSNbot和Baiduspider-image的许可。User-agent:BaiduspiderDisallow:/baiduDisallow:/s?Disallow:/ulink?Disallow:/link?Disallow:/home/news/data/Disallow:/bhUser-agent:Googlebot
1./robots.txt2.5.2经典robots.txt例子Disallow:/baiduDisallow:/s?Disallow:/shifen/Disallow:/homepage/Disallow:/cproDisallow:/ulink?Disallow:/link?Disallow:/home/news/data/Disallow:/bhUser-agent:MSNBot
1./robots.txt2.5.2经典robots.txt例子Disallow:/baiduDisallow:/s?Disallow:/shifen/Disallow:/homepage/Disallow:/cproDisallow:/ulink?Disallow:/link?Disallow:/home/news/data/Disallow:/bhUser-agent:Baiduspider-image
1./robots.txt2.5.2经典robots.txt例子Disallow:/baiduDisallow:/s?Disallow:/shifen/Disallow:/homepage/Disallow:/cproDisallow:/ulink?Disallow:/link?Disallow:/home/news/data/Disallow:/bh
1./robots.txt2.5.2经典robots.txt例子User-agent:BaiduspiderAllow:/User-agent:Baiduspider-imageAllow:/User-agent:Baiduspider-videoAllow:/User-agent:Baiduspider-newsAllow:/User-agent:GooglebotAllow:/
2./robots.txt2.5.2经典robots.txt例子User-agent:MSNBotAllow:/User-agent:YoudaoBotAllow:/User-agent:SogouwebspiderAllow:/User-agent:SogouinstspiderAllow:/User-agent:Sogouspider2Allow:/
2./robots.txt2.5.2经典robots.txt例子User-agent:SogoublogAllow:/User-agent:SogouNewsSpiderAllow:/User-agent:SogouOrionspiderAllow:/User-agent:JikeSpiderAllow:/User-agent:SosospiderAllow:/User-agent:*Disallow:/
2./robots.txt2.5.2经典robots.txt例子可以看出hao123只对于特定的几个搜索引擎爬虫开放了全部爬取权限,对于未指定的爬虫,disallow是所有路径,相当于不允许爬取。
2./robots.txt2.6.1HTML语言规范HTML(HyperTextMarkupLanguage,超文本标记语言)是用来描述网页的一种语言。“超文本”指的是页面内可以包含图片、链接,甚至音乐、视频、程序等非文字元素;“标记语言”指在文档内使用标记标签(MarkupTag)来定义页面内容的语言,例如标记标签<body>定义文档的主体。一个网页对应着一个或多个HTML文档,Web浏览器读取HTML文档后将其以网页的形式显示。标记标签又被称为HTML标签,是组成HTML页面的基本内容。HTML标签是由尖括号包括的关键词,例如<body>、<head>等,关键词可以忽略大小写。从开始标签到闭合标签之间的代码称为元素。在标签的作用下,文档可以改变样式,或实现插入图片、链接、表格等结构的功能。
1.HTML标签HTML标签有很多。从闭合的角度可以分为闭合标签与空标签。闭合标签是指由开始标签和结束标签组成的一对标签,带斜杠的元素表示结束,例如<body>和</body>,这种标签允许嵌套和承载内容。空标签是没有内容的标签,通常用来占位,在开始标签中自动闭合,例如<br>、<link>、<meta>都属于空标签。HTML标签还可以按照在文档中的位置特性进行分类,主要分为块级标签、行内(内嵌)标签和行内-块级(内嵌-块级)标签。(1)块级标签:块级标签是独占一行的标签,并且标签间的元素能随时设置宽度、高度、顶部和底部边距等。常见的块级标签有:<p>、<h1>、<ul>、<div>等。(2)行内(内嵌)标签:行内标签的元素和其他元素在同一行上,而元素的宽度、高度、顶部和底部边距不可设置。例如标签<span>、<a>、<label>等。(3)行内-块级(内嵌-块级)标签:多个行内-块级标签的元素可以显示在同一行。并且可以设置元素的宽度、高度、顶部和底部边距,例如<input>、<img>。除了标签名本身外,标签还可以带有一些属性。这些属性在网络爬虫程序设计中也经常使用。以下是典型的标签和属性的写法。
<ahref*=″/″target='_blank'>跳转到baidu</a><imgsrc=″/images/pic:gif″width:″28″height=″30″><divclass=″containerlogo-search″>在这些文本中,href是标签<a>的属性,指出了相应的超链接;src是img的属性,其属性值是图片对应的URL;<div>标签通常会指定其相应的class属性。HTML文档都具有一个基本的整体结构,包括头部(Head)和主体(Body)两大部分,其中头部描述浏览器所需的信息,主体包含网页所要展示的具体内容。同时,HTML文档都是以<html>开头,表明此文档使用HTML语言来描述,</html>表示文档的结尾。这两个标签限定了文档的开始点与结束点,在它们之间是文档的头部和主体。
2.HTML整体结构(1)头部头部描述浏览器所需要的信息,例如页面标题、关键词、说明等内容。头部包含的信息不作为网页的内容来显示,但是会影响网页的显示效果。头部信息的开始和结尾是由<head>和</head>两个标签标记的,<title>、<base>、<link>、<meta>、<script>以及<style>标签可以添加到头部信息中。各标签的描述见表2-4。表2-4
HTML标签描述标签描述标签描述<head>定义关于文档的信息<link>定义文档与外部资源之间的关系<title>定义文档的标题<meta>定义关于HTML文档的元数据<base>定义页面上所有链接的默认地址或默认目标<script>定义客户端脚本文件<style>定义文档的样式文件(2)头部网页需要显示的实际内容都包含在主体之中,由<body>、</body>表示主体信息的开始和结尾。对于网络爬虫抓取Web页面而言,所关注的信息内容也都是大部分封装在<body>和</body>之间。2.6.2CSS简述内联样式即在相关的标签中使用样式属性。当特殊的样式需要应用到个别元素时可以使用。样式属性可以是任何CSS属性,主要使用的属性为style。下面的代码设置了段落的颜色。
<pstyle=″color:blue″>This
issparagraph.</p>
1.内联样式2.6.2CSS简述当单个文档需要特别样式时可以在头部通过<style>标签定义内部样式表。下面的代码通过在头部定义内部样式表将页面背景设置为黄色。
<head><styletype=″text/css″>Body{background-color:yellow;}p{color:blue;}</style></head>
2.内部样式表2.6.2CSS简述当样式需要被很多页面引用时,可以使用独立的外部CSS文件,这样可以简化页面模式的设计。<head><linkrel=″stylesheet″type=″text/css″href=″mystyle.css″></head>
3.外部引用2.6.3节点树及节点间的关系首先来看DOM节点树。文档对象模(DocumentObjectModel,DOM)是W3C(万维网联盟)组织推荐的处理可扩展置标语言的标准编程接口。这是一种与平台和语言无关的应用程序接口,DOM可以动态地访问程序和脚本,更新其内容、结构和WWW文档的风格。
1.DOM节点树根据W3C的DOM标准,文档中的所有内容都是节点,节点是DOM的最小组成单元。浏览器会根据DOM模型将文档解析成一系列节点,这些节点组成一个树状结构,称为DOM节点树。DOM节点树体现了文档的层次结构,它有两种类型:一种是DOM文档节点树;另一种是DOM元素节点树。DOM文档节点树包含文档中所有类型的节点,DOM元素节点树只包含元素节点。可以通过DOM提供的一些方法及属性来遍历文档节点树。首先来遍历所有Node节点。遍历DOM文档节点树的方法兼容所有浏览器。•parentNode:获取父节点。•childNodes:获取所有子节点(包含元素节点和文本节点)。•firstChild:获取第一个子节点。•lastChild:获取最后一个子节点。•nextSibling:获取元素之后紧跟的节点。•previousSibling:获取元素之前紧跟的节点。可以使用JavaScript配合以上方法来获取相应的节点。以下属性在遍历元素节点树时会使用到。只遍历元素节点,其余类型的节点忽略。除了children方法外,其余方法在IE8及以下版本的浏览器中都不兼容。•parentElement:获取父元素。•children:获取所有子元素。•childElementCount:获取子元素的数量。•firstElementChild:获取第一个子元素。•lastElementChild:获取最后一个子元素。•nextElementSibling:获取元素后紧跟的元素。•previousElementSibling:获取元素前紧跟的元素。DOM将文档解析成一个由多层次节点构成的结构,即DOM结构。节点是DOM结构的基础。DOM节点包含12种类型,每种类型的节点分别表示文档中不同的信息及标记。节点之间的关系构成了层次,整个文档表现为ー个以特定节点为根节点的树形结构。节点关系类似于传统的家族关系,节点树相当于家谱。DOM的节点属性有一个特征,即DOM节点的关系属性都是只读的。(1)parentNode,父级属性。每个节点都有一个parentNode属性,该属性指向当前节点在节点树中的父节点。对于一个节点来说,它的父节点只可能为3种类型,分别是元素节点、文档节点和文档片段节点。如果父节点不存在,就返回null。
2.DOM节点之间的联系(2)parentElement,与parentNode属性不同的是,该属性指向当前节点在节点树中的父元素节点。IE浏览器中只有元素节点有该属性,其他浏览器中所有类型的节点都有该属性。(3)childNodes子级属性,childNodes属性返回一个只读的NodeList集合,保存着当前节点的第一层子节点。在DOM中要选择一个或多个节点,除了根据节点之间的各种父子兄弟关系选取之外,还可以通过DOM选择器来选择,DOM选择器大致有以下几种:(1)document.GetElementByID(),该方法根据提供的ID名称返回唯一元素。元素ID在IE8以下的浏览器中不区分字母大小写,而且返回匹配name属性的元素。(2)getElementsByTagName(),该方法提供的标签名返回一组元素,如果要对其中一个(即使是唯一一个)进行操作,就需要加上元素的数组引用标识。(3)getElementsByName(),根据提供的name返回一组元素,注意只有部分标签能够生效(表单、表单元素、img、iframe)。(4)getElementsByClassName(),根据提供的class属性返回一组元素,IE8及以下版本不支持这样的操作。
3.选择器当使用浏览器访问Web服务器上的页面时,浏览器首先会建立与Web服务器的HTTP连接,之后浏览器在这个连接上发送URL,接收服务器返回的信息,并显示在浏览器上。如果进行连接复用或持久化,后续的URL请求和响应信息接收都可以在这个连接上进行,这些请求之间是相互独立的。如果前后两次URL请求之间需要共享某些数据,例如在第一个页面进行了用户登录,第二个页面的访问就需要以该用户身份进行。更简单地讲,一个客户端访问服务器时,可能会在这个Web服务器上的多个页面之间不断刷新、反复连接同一个页面或者向一个页面提交信息。在这种情况下,不同页面之间或同一个页面的不同次访问之间需要保持某种状态,实现这种需求的技术就是状态保持技术。2.7.1CookieCookie是由服务器端生成,并在客户端进行保存和读取的一种信息,Cookie通常以文件形式保存在用户端。查看Cookie的方法随着浏览器的不同而略微有所差异。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内游乐园设计要点
- 安全纪律教育知识
- 教育传播理论发展历程
- 乡村儿童教育发展路径探索
- 劳动专题教育体系构建
- 趣味课堂教学设计指南
- 工业设计史中的包豪斯
- 房屋借住协议书
- 妻子股权继承协议书
- 租房无合同终止协议
- 2026年甘肃兰州市初二学业水平地理生物会考考试试题及答案
- 2026年高考考前预测卷-化学02(上海卷)(考试版及全解全析)
- 2026年及未来5年市场数据中国实体书店行业市场发展现状及投资前景展望报告
- DB32∕T 5314-2025 高速公路电动汽车清障救援作业规范
- 肝移植管理制度
- 2025-2030猪肉加工产业链行业市场现状供需分析及投资评估规划分析研究报告
- 车间员工计件薪酬方案范本
- 2026年盐城市机关事业单位工勤人员技师选拔考试试卷及答案
- 高炉煤气干法精脱硫技术规范
- 天平使用步骤课件
- 高原铁路隧道供氧系统管道施工
评论
0/150
提交评论