1.采集简易流程:
非结构化数据-数据采集-数据清洗-结构化数据-采集存储
非结构化数据: 不方便用数据库二维逻辑表现的数据,包含种类:音频、视频、文本、日志、WEB数据(html、xml)
结构化数据: 一般指存储在数据库中,具有一定逻辑结构和物理结构的数据。如 ORSACLE 、 DB2 、SQLSERVER、 MYSQL
数据清洗: 过滤不符合要求的数据。分为三种: 残缺数据、错误数据、重复数据(网址不同,内容相同(转载)、网址相同,内容相同)
2.URL地址用于描述一个网络上的资源;
基本格式:
schema://host[:port#]/path][#anchor]
schema 指定低层使用的协议 如:http、https、ftp
host HTTP服务器的IP地址或域名
port# HTTP服务器的默认端口是80,可以省略。若是其他必须指明
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
举个栗子:
其中
schema 是 http
host
www.mywebsite.com
path sj/test/test.aspx
query-String 是?后面的内容 name=sviergn&x=true
anchor stuff
http 超文本传输协议
https 安全超文本传输协议
ftp 文件传输协议
3.爬虫规则robots协议
概述:告诉你搜索引擎你哪些页面可以抓取哪些页面不可以抓取
Robots协议不是一个国际标准,但事实上已经成为业内普通遵守的规范
Robots协议内容以文本文件Robots.txt的方式放置在网站的根目录下。
Robots协议只是一个申明并不是技术手段,只防君子不防小人!
Robots协议文件的写法:
User-agent:* *是一个通配符,表示所有的搜索引擎种类。
Disallow:/admin/ 禁止爬寻admin目录下面的目录
Disallow:/admin/*.htm 禁止爬寻admin目录下的所有.htm后缀文件
User-agent: Baiduspider 禁止百度的爬虫访问所有目录
4.元搜索种类
百度、360 搜狗 网易有道 Google 雅虎
5.网页DOM结构
可以理解为网页的API
基本结构:
<html> 开始 最大的父节点
<head> 头部 标题
<title>DOM 教程</title> 标题的内容
</head> 头部结束
<body> 身体 主体
<h1>DOM 第一课</h1> h1-h6 字体大小,1最大,6最小
<a href="http://www.w3school.com.cn">这个是链接的名字</a> 链接格式
<img src="1.jpg" width="200" height="50" /> 图片 src跟的是图片名字(在桌面存放着) width图片宽度 height 图片高度
<p>Hello world!</p> p 换行
</body> 身体结束
</html> 全部结束
http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET(查).POST(改) PUT(增) DELETE(删)
POST和GET区别
GET提交的数据会显示在URL上,POST方法是把提交的数据放在HTTP包的Body中
GET提交的数据大小有限制。 POST提交没有数据限制
GET方式提交数据,会存在安全问题,因为用户名和密码会出现在URL上。
6.获取网页源代码
打开网页 -任意地方右击鼠标-查看源代码 。 or F12(左上角有个箭头,点一下之后选择内容,系统会自动跳到你选择内容的源代码处)
查看网页编码格式:在head下面的meta charset=“UTF-8”
7.信息分类及元素分析
信息分类:
境内:新闻:搜狐、腾讯、新浪、凤凰、网易
微博:搜狐微博、腾讯微博、新浪微博
论坛:天涯、猫扑社区、西祠胡同、新浪论坛、知乎、贴吧
博客:新浪博客、网易博客、搜狐博客、腾讯博客
微信
境外:Facebook、Twitter
论坛
博客
新闻:美国中文网、华尔街日报、美国华人网、中国城、BC中文网
元素分析
新闻-采集元素:标题、来源、发布日期、点击数、网址、内容
论坛: 标题、来源、发布日期、点击数、回复数、网址、内容
微博: 博主关注数、粉丝数、所发微博数、来源、发布日期、转发数、评论数、网址、内容
8.分析网页:
F12打开网页源代码后---选择network--选择XHR上面一行显示网页加载的进度,下方左边一栏显示网页名字???
右边一栏在Headers栏内显示内容有
Request URL:
https://www.zhihu.com/api/v4/me?include=available_message_types%2Cdefault_notifications_count%2Cfollow_notifications_count%2Cvote_thank_notifications_count%2Cmessages_count //网页地址
Request Method: GET //请求方式:网络
Status Code: 200 OK //代码状态:200(正常打开)404(网页丢失)500(代码错 误)
Cookie: // 已加密方式存放网页账号密码,存放在文本文件内
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 //用户代理 Windows机器,谷歌浏览器 做爬虫一定会用到。。。。
9.数据采集器分类(爬虫分类)
1)批量型数据采集器
批量型数据采集有比较明确的抓取范围和目标,当爬虫达到这个设定的目标后,即停止抓取一定时间。具体目标各异,如抓取一定数量,抓取一定时间(领导给定一段时间或者给定采集网站多少页 等等是一个具体的工作量目标)。
2)增量型数据采集器
与批量型数据采集不同,会保持持续不断的抓取,对于抓取到的网页,要定时更新。(就是当我们在企业中真正的采集数据时,是24小时不间断的采集,通过网页的更新频率去进行采集,把网页上最新的内容采集回来。所以说增量型数据采集是我们最最常用的采集器)
3)垂直型数据采集
垂直型数据采集关注特定主体内容或者属于特定行业的网页;例如:对于健康网站来说,只需要从互联网页里找到与健康相关的页面内容即可,其他行业的内容不再考虑范围。
垂直型数据采集一个最大的特点和难点就是:如何识别网页内容是否属于指定行业或者主题。往往需要爬虫在抓取阶段就能够动态识别某个网址是否与主题相关,不相关不抓取以达到节省资源。
10.采集基础原理-抓取策略
1)深度优先遍历策略
指爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪。(就是一条链接走到走不动为止,再返回到起始页,然后在走下一个链接走到走不到为止。。。)
优点:能遍历一个Web站点或深层嵌套的文档集合
缺点:因为Web结构太深,可能一旦进去,再也出不来的情况。
2)宽度优先遍历策略
指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有网页(就是先爬完这个页面的所有链接之后,在进入某一个链接以后采完所有的链接。。。。之后返回上一页面选择第二个链接采,再返回选择第三个、直到本页面的所有链接都采完之后,在选择一个链接采他里面的内容)
优点:它能在两个HTML文件之间找到最短路径。
宽度优先搜索策略通常是实现爬虫的最佳策略,因为它容易实现,而且具备大多数期望的功能。一般采用以宽度优先搜索策略为主、现行搜索策略为辅的搜索策略。
3)反向链接数策略
指一个网页被其他网页链接指向的数量。表示的是一个网页的内容收到其他人的推荐的程度。(就是这个链接被其他网页直接指向,从而决定不同网页的抓取先后顺序)
4)非完全PageRank策略
借鉴了PageRank算法的思想:按照一定的网页分析算法,预测出候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或多个URL进行抓取,即对于已经下载的网页,联通待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。因为它只访问算法觉得有用的网页,有可能很多相关网页被忽略。
因为最佳优先策略是一种局部最优搜索算法。因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。这样的闭环调整可以将无关网页数量降低30%·90%
5)大战优先策略
对于待抓取URL队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载(就是对于大的网站进行优先下载。)
11)采集基础-采集工作方式
一、主从式分布数
![](https://i-blog.csdnimg.cn/blog_migrate/d0f7b52165eaadf9863b2f43a6c349e0.png)
URL服务器:维护待抓取URL队列,并分配给不同的抓取服务器(需要对抓取服务器的工作进行负载均衡)
抓取服务器:负责抓取网页
(每个抓取服务器只和URL服务器进行信息传递)
优点:使得各个服务器承担的工作量大致相等不至于出现忙的过忙、闲的过闲的情形,抓取服务器之间没有通信联系,每个抓取服务器只和URL服务器进行消息传递。
URL服务器需要极高配置,而抓取服务器的配置需要则是:1G内存,不需要显示器,较高的网卡带宽,CPU低 即可,UPS供电(不间断电源)
二、对等式分布式采集
![](https://i-blog.csdnimg.cn/blog_migrate/cbd0bad97a644fb833287eef82ecc8f4.png)
服务器之间不存在分工差异,每台服务器承担相同的功能,各自负担一部分URL的抓取工作,因为没有URL服务器存在,所以分配任务就需要通过(模余值)平均分配任务量。
缺点:有可能某个抓取服务器抓取的数量特别少,有的会特别多。
优点:因为分配只正对主域名,所以可以保证同一网站的网页都由同一台服务器抓取,这样一方面可以提高下载效率,还可以主动控制对某个网站的访问速度,避免对某个网站访问压力过大。