爬虫基础

1.爬虫概述

爬虫又称为网络爬虫,主要指代从互联网是上进行数据采集的脚本程序,是进行数据分析和数据挖掘的基础

爬虫首先要做的工作就是获取网页源代码,将源代码获取后提取其中的信息。爬虫最通用的方法便是采用正则表达式提取,这是一个万能的方法,但构造正则表达式太过复杂且容易出错,所以一般根据网页节点属性、css选择器或者xpath来提取网页的信息

提取信息后要做的就是保存数据,以便后续使用。保存的形式多种多样,可以简单保存为TXT文本或者json文本,也可保存到数据库或远程服务器,如借助sftp进行操作等

2.会话和cookies

在浏览网站的过程中,经常会需要登录才能访问,登录后可以多次访问但一定时间后可能会需要重新登录,还有一些网站登录后长时间都不会失效,这就涉及到了会话和cookies的相关内容

2.1静态网页和动态网页

静态网页编写快,编写简单,但是存在很大的缺陷,如可维护性差,不能根据url灵活多变的显示内容。动态网站正是根据静态网页缺陷应运而生,弥补了静态网页的一些不足。它可以生成动态解析url中参数的变化,关联数据库并动态呈现不同的页面内容,非常灵活多变,其功能远远强于静态网页。

此外,动态网站还可以实现用户登录和注册的功能。这些功能就涉及到了之前提到的会话和缓存了。会话在服务端,用来保存网站的服务器,用来保存用户的会话信息,cookies在客户端,它保存了登录的凭证,有了它,只需要在下次请求携带cookies发送请求而不必重新输入用户名、密码等信息重新登录了。功能强大如斯,原理何如?且待一一道来:
1)会话:会话对象用来存储特定用户所需的属性及配置信息。这样,当用户在应用程序的web页之间跳转时,存储在会话对象的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的web时,如果该用户还没有会话,则web服务器将自动创建一个会话对象。当会话过期或被放弃后,服务器将终止该会话

2)cookies:cookies指某些网站为了辨别用户身份,进行会话跟踪而存储在用户本地终端上的数据

那么,我们怎样利用 Cookies 保持状态呢?当客户端第 次请求服务器时,服务器会返回个请求头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把 Cookies 存起来当浏览器下一次再请求该网站时浏览器会把 Cookies 放到请求头 起提交给服务器 “ Cookies 携带了会话 ID 信息,服务器检查该 Cookies 即可找到对应的会话是什么,然后再判断会话来以此来辨认用户状态

在成功登录某个网站时,服务器会告诉客户端设置哪些 ookies 信息,在后续访问页面时客户端会把 Cookies 发送给服务器,服务器再找到对应的会话加以判断 如果会话中的某些设置登录状态的变量是有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了

反之,如果传给服务器的 Cookies 是无效的,或者会话已经过期了,我们将不能继续访问页面,
此时可能会收到错误的响应或者跳转到登录页面重新登录

因此,会话跟cookies需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录会话控制

3.爬虫的分类及代理

3.1爬虫的分类

根据项目中的使用情况进行区分,主要分为两大类型:通用爬虫和聚焦爬虫
根据采集数据的过程进行区分,可分为:累积爬虫和增量爬虫

通用爬虫:通用爬虫是做常见的数据采集程序,是网络上搜索引擎使用的脚本程序。通用爬虫采集的数据具有普遍性,针对性较差,但是它的重用性较高。一旦开发调试完成,可以长时间运行给搜索引擎提供需要的数据

增量爬虫:目标数据在需求更改的过程中,可能随时发生变化,历史数据的变动和新增数据都被称为增量,所以针对此类数据采集的爬虫程序,称为增量爬虫。增量爬虫的特点就是在采集数据的过程中随时更新历史数据的同时采集新增数据。与通用爬虫一样适用于搜索引擎

聚焦爬虫:聚焦爬虫是数据供应商企业使用最多的爬虫程序,通常情况针对指定范围的数据进行定向的数据采集和筛选,能在一定时间内最大限度的采集企业需要的有效的数据。针对性较高,需要独立开发爬虫程序进行数据采集,但重用性较差

累积爬虫:目标数据一旦生成,不会发生改动,随着时间的延伸数据量逐渐增大,采集并保存历史数据之后针对新生成的数据进行进一步获取,采集过程中会不断更新历史数据

#######3.2 为什么要使用爬虫
爬虫的作用是从网站上采集数据,目前市面上流行的下载工具比比皆是,使用爬虫的优势和使用场景的目的性一定要明确。

优势:将下载数据的过程通过编写的程序实现自动化批量处理,但是自动化有两个前提条件:需要编写程序、可以批量处理

使用场景:
采集数据之前,对目标数据进行分析,并编写程序代码
目标数据是批量数据,批量数据有自己的组成规律

注意事项:爬虫在一定程度上备受争议,聚焦爬虫在短时间内更是会造成目标数据所在服务器短时间的压力上升。爬虫程序由于程序本身的特殊性,在一定程度上可能引发一些对网站造成恶意攻击的行为。且爬虫在采集数据的过程中对于数据的涉密性区分不是很严格,主要靠人工智能手段进行筛选操作,所以在爬虫过程中需注意一下问题:

爬虫采集的目标数据量进行分析
爬虫采集的目标数据涉密性进行分析
爬虫采集目标数据的频率进行分析

3.3 爬虫代理

对于爬虫来说,由于爬虫爬取的速度较快,在爬取的过程中可能会遇到同一个IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP,给爬虫带来极大的不便

使用代理隐藏真实的IP,让服务器误以为代理服务器在请求自己,这样在爬取的过程中不断更换代理,就不会被封锁,可以达到很好的爬取效果

代理的分类:代理时,可以根据协议区分,也可以根据其匿名程度区分

1)根据协议区分
FTP代理服务器:主要用于访问FTP服务器,一般有上传、下载以及缓存功能,端口一般为21、2121等

HTTP代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、8080、3128等

SSL/TLS代理:主要用于访问加密网站,一般有SSL或TLS加密功能,端口一般为443

RTSP代理:主要用于访问real流媒体服务器,一般有缓存功能,端口一般为554

Telnet代理:主要用于Telnet远程控制,端口一般为23

POP3/SMPT代理:主要用于POP3/SMTP方式收发邮件,一般有缓存功能,端口一般为110/25

SOCKS代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为1080

2)根据匿名程度区分

高度匿名代理:会将数据包原封不动的转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP

普通匿名代理:会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率查到客户端的真实IP,。代理服务器通常会加入的HTTP头有HTTP_VIA和HTTP_X_FORWARDED_FOR

透明代理:不但改动了数据包,还会告诉服务器客户端的真实IP,这种代理除了能用缓存技术提高浏览器速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子就是内网中的硬件防火墙

间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容

  • HTTP基本原理 URI、URL、URN(Uninform Resource) URI(Identifier):统...
    GHope阅读 2,054评论 2 26
  • 1、爬虫概述 爬虫、又被称为网路爬虫,主要指从互联网上进行数据采集的脚本——后者程序,是进行数据分析和数据挖掘的基...
    命运丿阅读 497评论 0 2
  • 爬虫基础 HTTP基本原理 URI和URL URI(Uniform Resource Identifer):统一资...
    柄志阅读 394评论 0 1
  • 大数据时代:数据如何产生? 1、大的公司打的企业:通过用户产生的数据2、大的数据平台:通过收集或者和其他的企业或者...
    现实里的童话xklss阅读 551评论 0 0
  • 网络参数 1.header下(1)user-agent:这个是爬虫header里可以说必须的东西,基本网站肯定第一...
    dawsonenjoy阅读 934评论 0 4