什么是爬虫

请求网站并提取数据的自动化程序

爬虫的基本流程

发起请求 --> 获取响应数据 --> 解析/清洗数据 --> 保存数据

请求和响应(Request和Response)

浏览器发送信息给该网址所在的服务器,这个过程叫做HTTP Request

服务器收到浏览器发送的消息后,根据浏览器发送的消息内容,做相应处理,然后把消息回传给浏览器,这个过程叫做HTTP Response

Request中包含什么

1.请求方式

2.请求URL

3.请求头

4.请求体

Response中包含什么

1.响应状态

2.响应头

3.响应体

能抓怎样的数据

1.网页文本

2.图片

3.视频

4.其他

解析方式(清洗方式)

常见的解析方式是正则表达式或者BeautifulSoup等解析库。

怎样保存数据

一般保存到数据库或者文件

实战前环境准备

1.安装Python3 : https://www.cnblogs.com/0bug/p/8228378.html

2.安装HTTP请求库 requests:

pip install requests

基本用法参考:https://www.cnblogs.com/0bug/p/8252929.html

3.安装解析库 beautifulsoup4

pip install beautifulsoup4

基本用法参考:https://www.cnblogs.com/0bug/p/7871704.html

4.安装编辑器

推荐使用pycharm或者vscode,直接下载安装即可。

pycharm:https://www.jetbrains.com/pycharm/download/#section=windows

vsscode:https://code.visualstudio.com/

爬虫实战

网络协议(了解)

1.HTTP简介

web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议规范,完成客户端到服务端等一系列运作流程,协议是指规则的约定。可以说,web是建立在HTTP协议上通信的。

简单的HTTP:

 请求报文的构成:

 响应报文的构成

 更多HTTP相关知识点参考《图解HTTP》

2.TCP/IP

通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。

计算机与网络设备要相互通信,双方就必须事先约定规则。例如:”如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎么结束通信等规则都要事先确定,不同的硬件、操作系统之间的通信“。所有的这一切都需要一种规则。而我们就把这种规则称之为协议。

 3.TCP/IP的分层管理(OSI模型)

TCP/IP 协议族里重要的一点就是分层。把TCP/IP层次化是有好处的。比如,如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需要把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。层次化之后,设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清楚对方在地球上哪个地方、对方的传输路线是怎样的、是否确保传输送达等问题。

4.网络协议分层

计算机网络有7层、4层、5层的协议体系结构

1.七层

七层是指OSI七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。

2.五层

五层只是OSI和TCP/IP的综合,是业界产生出来的非官方协议模型,但是很多具体的应用。实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。 

3.四层

四层是指TCP/IP四层模型,主要包括:应用层、运输层、网际层和网络接口层。

三者对应关系如下图:

四层协议和对应的标准七层协议的关系如下图:

协议之间各自发挥作用:

参考:

https://cuiqingcai.com/

https://blog.csdn.net/Beyond_2016/article/details/81482335

https://baike.baidu.com/item/OSI/5520?fr=aladdin

https://www.cnblogs.com/dadadechengzi/p/7999371.html

《图解HTTP》:https://read.douban.com/ebook/12054542/

02-12 02:49