爬虫介绍

一,什么是爬虫

网络怕中又称为网络蜘蛛,网络蚂蚁,网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则称之为网络爬虫算法。使用python可以很方便的写出爬虫程序,进行互联网信息的自动化检索

二,为什么学习爬虫

私人定制一个搜索引擎,并且可以对搜索引擎的采集工作原理进行更深层次的理解,获取更多的数据源,并且这些数据源可以按照我们的目的进行采集,去掉很多的五官数据, 更好的进行seo(搜索引擎优化)

三,网络爬虫的组成

1⃣️控制节点: 叫做爬虫中央控制器,主要负责根据url地址分配线程,并调用爬虫节点进行具体的爬行

2⃣️爬虫节点:按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本处理,爬行后会将对应的爬行结果存储到对应的资源库中

3⃣️资源库构成: 存储爬虫爬取到的响应数据,一般为数据库

四,爬虫设计思路

1⃣️首先确定需要爬取的网页URL地址

2⃣️通过http协议来获取对应的html页面

3⃣️如果是需要的数据就保存起来,如果页面是其他的url,那么就继续执行第二步

五,PHP,JAVA,PYTHON比较

1⃣️PHP:虽然是世界上最好的语言,但天生不是干爬虫的命,php对多线程,异步支持不足,并发不足,爬虫是工具性程序,对速度和效率要求较高

2⃣️Java 生态圈完善,是python最大的对手,但是java本身很笨重,代码量大,重构成本比较高,任何修改都会导致大量代码的变动,最要命的是爬虫需要经常修改部分代码。

3⃣️python 语法优美,代码简洁,开发效率高,三方模块多,调用其他接口也方便,有强大的爬虫scrapy,以及成熟高校的scrapy-redis分布式策略

需要的技能

1)如何抓取页面内容

http请求处理,urlib处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件

2)解析服务器响应的内容

re,xpath,beautyfulsoup4,jsonpath,pyquery目的是使用某种描述性语法来提取匹配规则的数据

3)对动态html,验证码的处理

selenium+phantomJS(无界面浏览器),模拟真实浏览器加载js,ajax等非静态页面,机器学习库,机器图像识别系统(识别图片中的文本) Tesseract

4)Scrapy框架

中国常见的框架Scrapy,Pyspider高定制高性能(异步网络框架twisted)所以数据下载速度非常快,提供了数据存储,数据下载,提取规则等组件

5)分布式策略

scrapy-redis,在scrapy的基础上添加了一套Redis数据库为核心的一套组件,让scrapy框架支持分布式的功能,主要在Redis里做请求指纹去重,请求分配,数据临时存储

六,反爬虫技术

1,user-agent 2,代理 3,验证码 4,动态数据加载

七,抓取流程

1,首先选取一部分已有的url,把这些url放到带爬队列,从队列里提取出这些URL,然后解析DNS得到主机IP,然后去这个IP对应的服务器里下载html页面,保存到搜索引擎的本地服务器里,之后爬过的URL放入爬取队列

2,分析这些网页内容,找出网页里的URL连接,继续执行第二步,直到爬取条件结束

八,搜索引擎如果获取一个新网站的URL

1,主动向搜索引擎提交网址(百度站长平台)

2,在其他网站里设置网站的外链接

3,搜索引擎会合dns服务商合作,可以快速收录新的网站

九,通用爬虫并不是玩物皆可爬的,他需要遵守规则

1,协议会指明通用爬虫可以爬去网页的权限,Robots.txt只是一个建议,并不是所有的爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守

十,通用爬虫工作流程

1,爬取网页

2,存储数据

3,内容处理

4,提供检索/排名服务

十一,搜索引擎排名

1,pageRank值:根据网站的流量(点击量,浏览值人气)统计,流量越高,网站越值钱,排名越靠前

2,竞价排名:谁钱多谁排名高

十二,通用爬虫的缺点

1,只能提供和文本相关的内容(html,word,pdf)等,但是不能提供多媒体(音乐,图片,视频)和二进制文件(程序,脚本)等

2,不能理解人类语义上的检索

十三,聚焦网络爬虫

1,概念:爬虫程序员写的针对某种内容的爬虫

2,特点:会针对某种特定的内容取爬取信息,而且会保证信息和需求尽可能相关(面向主题爬虫,面向需求爬虫)

十四, 增量式网络爬虫

十五,深层网络爬虫

原文地址:https://www.cnblogs.com/wangyue0925/p/11061923.html