爬虫技术基础
Posted 协议分析与还原
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫技术基础相关的知识,希望对你有一定的参考价值。
“ 爬虫的简单介绍。”
爬虫,即spider,是一种按一定规则,自动从网络上抓取并提取特定信息的程序或者脚本。
互联网络,浩瀚无际,页面纷繁,包罗万象,直接导致信息的过载,人无法用双手双眼,从中提取我们感兴趣有价值的内容。信息处理自动化的迫切需求导致了爬虫的产生和广泛应用。
对协议的分析还原而言,不仅仅是从流量中分析特定的数据,我们的眼光,应更具前瞻性,被动地分析流量,工作永远无止境,使用爬虫技术,能极大地增强协议分析还原的格局与格调,同时,也是提升协议还原系统数据处理能力的有效手段。在协议还原领域,智能化,自动化,不仅仅是口号,而是时时刻刻的需求,爬虫,是手段之一,是系统提升的必经之路。
本文对爬虫的原理和基础进行简单的介绍,后续将会有文章对爬虫技术进行实战演练,各位可提早学习爬虫中广泛使用的语言之一,如Python,以便同步实战。
01
—
基本原理
一般来说,爬虫是从特定网页开始,获取页面上的URL,然后加入爬取队列,一直循环直至满足特定停止条件。随着进化,新的爬虫种类出现,它带有特定任务,也是从特定页面开始,但会对网页内容进行深入分析,仅抓取符合特定条件的URL内的数据,并对符合要求的数据进行存储,直至系统达到特定条件停止。
从上述描述可知,一般的爬虫会包括如下几个部分:网络数据请求及流程控制、内容分析提取、有效数据存储。
通常,爬虫的实现,需要了解网站或者APP的架构和逻辑,然后根据页面的相关信息,进行动态的数据构造和收发。
我们这里讨论的爬虫,是对特定数据进行爬取的爬虫。
一个最简单的爬虫实现,我们可以借助wget库,使用批处理程序,来对特定网站的特定页面,如金采网这类政府网站内的通知公告等信息的爬取,不需要复杂的技术。
02
—
技术现状
爬虫是用编程语言实现的,同时,会借助各种工具,目前,在网络中流行广泛被用于爬虫编写的语言是python,它有很多库可供使用,例如,BeautifulSoup、scrapy等。
在一些特定的系统中,会使用C/C++作为编程语言,来实现特定任务的爬虫。
还有些人,会使用java等语言来实现爬虫。
总之,哪个语言对实现所需的爬虫效率最高,我们就选择相应的语言来实现爬虫。
目前,爬虫基本上都是对网站进行爬取,即主要进行HTTP/HTTPS的操作,当然,还有小众的爬虫,对一些APP的内容进行爬取,这些,除HTTP/HTTPS操作外,还有部分TCP/UDP的操作,稍微复杂点。
对各类数据的爬取,需要模拟特定场景,如浏览器访问,APP访问等,模仿得越逼真,爬取效果会越好。
我们的爬虫,一般在PC上,满足特定的条件,即可运行,更多的是运行在VPS或者服务器上。
03
—
学习前提
HTTP请求及响应
HTTP是互联网的基础,一个HTTP对由一个请求和一个响应组成,请求和响应都分成HTTP头部和HTTP体两个部分,其中请求头部包含请求的URL及各类头数据,而响应体部分则包含页面的主要内容。
分析清楚HTTP请求和响应间的关系,就能够根据需求对爬虫进行实现了。
对爬虫而言,需要关注URL、UA、Cookies及内容的几个方面。
对协议还原而言,HTTP是最基础的协议,不可避免地每个人都会接触到,本号内之前也介绍个HTTP协议相关的内容及实例,可以作为了解HTTP请求和响应的参考,如:
HTML
html即网页的设计语言,一个网站是由一系列固定和临时的HTML页面组成的,了解了HTML之后,就能很方便地对特定内容进行提取了。爬虫中对内容的分析和提取,主要就是对HTML页面的提取。
对HTML的解析,在Python中可以使用BeautifulSoup库,其安装可以参考:
对HTML的学习,可以参考w3school网站的相关内容。
JavaScript
javascript是一种解释型语言,通常在网站设计中使用,用来进行交互信息的生成和获取。爬虫中对内容的分析提取的另一部分,就是对JavaScript的信息计算和构造。
同样的,对其学习,可以参考w3school网站的相关内容。
04
—
爬取难点
爬虫作为一种模仿浏览器交互的自动化程序,不可避免地会遇到一些问题,典型的问题有:
网站反爬虫措施
网站会对爬虫进行一定的限制,例如对包含一些特征的请求进行拒绝,对一些频繁请求的IP进行限制访问。这需要使用一定的策略和手段来处理,后续将会在相关文章中讲到。
交互的模仿
对各个不同的网站,需要执行的请求方式各不相同,有些可能是根据一定顺序执行特定操作,有些需要根据前后操作的结果进行不同处理,这需要在爬虫的设计中考虑到。这个交互,考验的是对网站的结构的理解,对有一定协议分析能力的朋友来说,这不会太难。
动态脚本的解析
部分网站,需要根据JavaScript等对内容进行解析,这需要对相关代码有一定的理解能力,考验的是编程水平,这只能靠我们自己在实战中提高了。
在后续,我将通过实战的方式,和大家一起深入了解爬虫的世界,有需求,尽管提,随时联系。
长按进行关注。
以上是关于爬虫技术基础的主要内容,如果未能解决你的问题,请参考以下文章
零基础快速入门Python网络爬虫技术@今晚云技术社区千聊分享