不二如是 发表于 2019-6-14 09:24:05

学习爬虫必会的Web知识

本帖最后由 不二如是 于 2020-3-17 18:35 编辑

本讲是:实用Tips - 51 - 如何从Web端灭“爬虫”?的衍生系列。

从 Web 端想学好爬虫,无外乎两点:


[*]爬虫原理
[*]HTTP/HTTPS通讯协议

接下来就从这两个方面来带大家好好学习一下。


网络爬虫



网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器:

发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
爬虫就是模拟浏览器的行为,越像越好,越像就越不容易被发现。

原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

从分类来说,常用的就两种:


[*]通用类:针对搜索引擎
[*]聚焦类:针对定向网站

从 python 极客系列板块,我们就知道爬虫能干啥:

传送门

爬虫工作其实也是有固定流程的:


第一步,向起始url发送请求,并获取响应。

第二步,对响应进行提取。

第三步,如果提取 url,则继续发送请求获取响应。

第四步,如果提取数据,则将数据进行保存。

不过有言在先,存在一些道德层面的约束:robots 协议

网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

当然这仅仅是君子的口头协议,背后意味着啥,我就不多说了。

有兴趣的鱼油,可以淘宝的 robots 协议(隐藏内容,可不看):
**** Hidden Message *****


HTTP/HTTPS



HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议。

它由请求和响应构成,且是无状态的。

协议:
协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。
无状态:
无状态是指两次谅解通信之间是没有任何联系的,每次都是一个新的连接,服务端不会记录前后的请求信息。

常见的 HTTP 请求流程:


第一步、浏览器通过域名解析服务器(DNS)获取 IP 地址。

第二步、浏览器先向 IP 发起请求,并获取相应。

第三步、在返回的响应内容(html)中,会带有 css、js、图片等 url 地址,以及 ajax 代码。

第四步、浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应。

第五步、浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css 等内容会修改页面的内容。

js 也可以重新发送请求,获取响应,从获取第一个响应并在浏览器中展示,直到最终获取全部响应。

并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染

上面的这 5 步,其实知不知道并不影响爬虫的使用。

但是下面要说的协议结构图,就必须要懂啦:


然后就是 url 地址格式:


scheme://host[:port]/path/…/[?query-string][#anchor]
scheme:协议(例如:http, https, ftp)

host:服务器的 IP 地址或者域名

port:服务器的端口(如果是走协议默认端口,缺省端口80)

path:访问资源的路径

query-string:参数,发送给 http 服务器的数据

anchor:锚(跳转到网页的指定锚点位置)

一个案例:


常见的请求头:

请求头        作用
Cookie        Cookie
User-Agent        浏览器名称
Referer        页面跳转处
Host        主机和端口号
Connection        链接类型
Upgrade-Insecure-Requests        升级为 HTTPS 请求
Accept        传输文件类型
Accept-Encoding        文件编解码格式
x-requested-with : XMLHttpRequest        ajax 请求

HTTP 因为不需要对数据进行加密所以性能更高,但是安全性差。

HTTPS 虽然安全性高,但是因为浏览器和服务器端需要对数据进行加解密,所以占用服务器资源。



http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif

如果喜欢,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列HTML帖子,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_278:} )

dmgbsj007 发表于 2019-6-14 18:23:27

thank you very much

天地~玄黄 发表于 2019-7-11 17:12:18

看看

Qmh 发表于 2019-7-11 22:47:04

{:10_257:}

小择不是那个泽 发表于 2019-7-12 08:21:04

大佬,带带我哦{:5_93:}

jiyao 发表于 2019-8-17 21:12:13

看看君子协议

QuQuers 发表于 2019-8-22 13:37:29

真的很好奇,啥是ROBOTS协议。

cxslovefishc 发表于 2019-8-29 00:13:56

{:5_105:}

zmy3616 发表于 2019-8-29 09:51:17

让我康康啊

木田 发表于 2019-9-13 14:42:31

想看隐藏部分

xiaoyudian4900 发表于 2019-10-11 11:29:00

是什么,看看

小海疼 发表于 2019-11-26 09:54:09

有用

你猜呢v 发表于 2020-1-16 10:42:21

学习学习

杰cc 发表于 2020-2-6 21:44:56

冲冲冲

su0tar 发表于 2020-3-19 14:32:27

看一看

13698640864 发表于 2020-4-15 08:59:41

加油

pato 发表于 2020-4-29 13:34:57

需要回复的

TCY 发表于 2020-5-7 11:29:49

robots是有格式滴~

maxliu06 发表于 2020-5-7 11:59:52

666 , 珍品

啊B呀 发表于 2020-5-11 11:55:15

en
页: [1] 2
查看完整版本: 学习爬虫必会的Web知识