https://www.bilibili.com/video/BV12E411A7ZQ?p=15
1,什么是爬虫:爬虫是一种按照一定规则,自动抓取互联网信息的程序或者脚本。
2,爬虫可以做什么:可以爬取图片、视频等等,只要是通过浏览器可以访问的数据都可以爬取。
3,爬虫的本质是什么:模拟浏览器打开网页,获取网页中我们想要的那部分数据。
#基本流程
1,准备工作
通过浏览器查看分析目标网页,学习 编程基础规范。
2,获取数据(核心)
通过HTTP库向目标站发起请求,请求可以包含额外的header等信息,如果服务器能正常响应,会得到一个response,便是索要获取的页面内容
3,解析内容
得到的内容可能是HTML.json等格式,可以用页面解析库、正则表达式等进行解析。
4,保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定形式的文件。
1,爬虫的分类
通用爬虫 | 搜索引擎的一部分,将互联网的网页下载到本地,形成镜像 | 直接影响搜索引擎的效果 |
聚焦爬虫 | 面向特定的主题需求,在网页抓取的时候对内容进行了筛选,只抓取相关的信息。。 | 更多的是面向聚焦爬虫 |
通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。
聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
1.1,搜索引擎工作原理
1.1.1,抓取网页:搜索引擎网络爬虫
1,首先选取一部分的种子url,将这些url放入到待抓取的url队列中
2,取出待抓取的url地址,解析等到主机的ip,将url对应的网页下载下来,存储进已经下载的网页库中,并且将这些已经完成的url地址抓取的URL放入到已经抓取的url队列中
3,分析已经抓取的URL队列中的 url,分析其中的其他url,将这些没有提取的url继续放入到待抓取的url队列中,从而进入下一循环
#通用网络的爬虫步骤
开始
|
初始URL
|
获取对应的数据或者网页
|
提取到新的URL地址,放入到URL队列中
|
满足终止的条件(如果不满足终止条件,将继续重复以上过程(获取网页开始))
|
结束
1.1.2,数据存储
搜索引擎通过爬虫爬取的网页,将数据存储进原始页面数据库,其中的页面数据与用户浏览器得到的html页面是完全一致的。
一般情况下,搜索引擎蜘蛛在进行网页抓取的时候,也会做重复内容检测,如果遇到大量抄袭或者复制的内容,就不再爬取。
1.1.3,预处理
搜索引擎将爬虫爬取的内容会进行各种预处理
提取文字
中文分词
消除噪音索引处理(比如版权文字、导航条、广告等。。。)
索引处理
链接关系计算
特殊文件处理
.............
但是搜索引擎还不能处理图片、视频、flash非文字内容,也不能执行脚本和程序
1.1.4,提供检索服务,网站排名
搜索引擎在对信息进行组织和处理之后,会为用户提供关键字检索服务,将用户检索的信息展示,同事,会根据pagerank(连接访问量)进行网站排名。
2,关于通信过程
1,浏览器会通过dns服务器查找域名对应的IP地址
2,向IP地址对应的web服务器发送请求
3,web服务器会根据请求响应,发送你需要的数据回浏览器
4,浏览器接受服务器送过来的数据或者网页,会进行渲染,展示在页面中。
- 谁在进行渲染数据:浏览器
- 一个域名必须有一个地址
- 地址可以没有域名
3,关于路径
URL:统一资源定位符
http://mocie.douban.com/typerank?kw=%E7%BE%8E%E9%A3%9F
协议(HTTP http ftp)://
服务器的域名或者ip地址【端口
http:超文本传输协议,是一种发布和接受html页面的方法
https:相当于http的安全版本,在http加入ssl层,443
SSL(安全套阶层),在传输层对网络进行加密,保障数据传输的安全性
4,请求方法
HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)
根据HTTP标准
HTTP:0.9时代只支持get
HTTP:1.0时代支持post和head
HTTP:1.1在1.0的基础上更新了,get,post,head,options,put,delete,trace,connect
HTTP:2.0没有普及
get | 请求指定页面信息,并且返回数据 | |
---|---|---|
post | 向指定的资源请求提交数据并获取页面信息 | |
head | 类似get,返回的是响应中没有具体的内容,用于获取报头 | |
options | 允许客户端查看服务器性能 | |
put | 从客户端向服务端传递的数据取代指定的文档内容 | |
delete | 请求服务器删除指定的页面 | |
trace | 主要用于测试或者诊断 | |
connect | 代理服务器 | |
1.5,get和post的区别
get和post是HTTP请求的两种基本方法。
HTTP是基于TCP/IP的关于数据如何在万维网中实现通信协议
1,get 把参数包含在URL中;post通过request body传递参数
2,GET请求只能进行url编码,而POST支持多种编码方式。
3,GET请求在URL中传送的参数是有长度限制的,而POST么有。
4,对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5,GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6,GET 请求指定页面信息,并且返回数据,POST** 向指定的资源请求提交数据并获取页面信息
6,常见的请求头
connection:kwwp-alive
1,clinet发起一个包含connection:keep-alive的请求(http.1.1默认值)
2,在server接受请求之后,
server支持keep-alive,回复一个包含connection:keep-alive的响应,不关闭连接
server不支持keep.alive,回复一个包含connection:close,g关闭连接
3,如果clint收到包含connection:keep-alive的响应,则同一个连接下发送下一个请求,直到一方主动连接关闭
Accept:
指的是浏览器或者其它的客户端可以接收的MIME(多用途互联网邮件扩展)文件类型,服务器可以根据它判断并返回适当的文件格式
text/html 希望接收的是html文本
application/xhtml+xml XHTML和xml文档
Accept-Ecoding:
Accept-Language:
Cookie:浏览器端cookie
HOSE:客户端地址
7,常见的响应头
content-type:内容的类型
8,状态码(面试会问)
100-199 表示服务器成功的接收部分请求,要求客户端继续提交其余的的请求才能完成整个处理过程
200-299 表示的是服务器成功接收请求并且完成整个处理过程
300-399 为了完成请求,客户需要进一步细化请求,304使用缓存资源
400-499 客户端的请求有问题,404 Not found,403 服务器决绝 没有权限
500-599 服务器出现错误 500