爬虫技术基础

 爬虫的简单介绍。


爬虫,即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请求和响应的参考,如:

干货!链家二手房数据抓取及内容解析要点

Wireshark分析实战:某达速递登录帐号密码提取

协议分析实战:某航某凰知音用户名及密码提取

使用Fiddler进行HTTP流量分析

裸奔的支付X聊天,你还敢用吗?

使用Fiddler抓取手机HTTP流量包


HTML

HTML即网页的设计语言,一个网站是由一系列固定和临时的HTML页面组成的,了解了HTML之后,就能很方便地对特定内容进行提取了。爬虫中对内容的分析和提取,主要就是对HTML页面的提取。


对HTML的解析,在Python中可以使用BeautifulSoup库,其安装可以参考:

Windows下Python 3.6 安装BeautifulSoup库


对HTML的学习,可以参考w3school网站的相关内容。


JavaScript

JavaScript是一种解释型语言,通常在网站设计中使用,用来进行交互信息的生成和获取。爬虫中对内容的分析提取的另一部分,就是对JavaScript的信息计算和构造。


同样的,对其学习,可以参考w3school网站的相关内容。


04


爬取难点


爬虫作为一种模仿浏览器交互的自动化程序,不可避免地会遇到一些问题,典型的问题有:

网站反爬虫措施

网站会对爬虫进行一定的限制,例如对包含一些特征的请求进行拒绝,对一些频繁请求的IP进行限制访问。这需要使用一定的策略和手段来处理,后续将会在相关文章中讲到。


交互的模仿

对各个不同的网站,需要执行的请求方式各不相同,有些可能是根据一定顺序执行特定操作,有些需要根据前后操作的结果进行不同处理,这需要在爬虫的设计中考虑到。这个交互,考验的是对网站的结构的理解,对有一定协议分析能力的朋友来说,这不会太难。


动态脚本的解析

部分网站,需要根据JavaScript等对内容进行解析,这需要对相关代码有一定的理解能力,考验的是编程水平,这只能靠我们自己在实战中提高了。


在后续,我将通过实战的方式,和大家一起深入了解爬虫的世界,有需求,尽管提,随时联系。

640?wx_fmt=jpeg

长按进行关注。





posted @ 2018-05-07 08:15  一二一二一  阅读(217)  评论(0编辑  收藏  举报