Python爬虫 1-爬虫简介

1.通信协议

1.1端口

我们想要进行数据通讯分几步?

  1. 找到对方IP
  2. 数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做 端口。这里的端口 我们一般都叫做 ‘逻辑端口’
  3. 定义通讯规则。这个通讯规则我们一般称之为协议
1.2 通信协议
  • 国际组织定义了通用的通信协议 TCP/IP协议
  • 所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
  • HTTP又叫做超文本传输协议(是一种通信协议) HTTP 它的端口是 80

2.网络模型

在这里插入图片描述
后期更新了新的参考模型 TCP/IP参考模型
在这里插入图片描述

2.1 https是什么?
  • https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的
  • https,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL
2.2 SSL怎么理解?
  1. • SSL也是一个协议主要用于web的安全传输协议
    在这里插入图片描述
2.3 Http请求和响应

HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
在这里插入图片描述

  1. 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
  2. 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
  3. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
  4. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
2.4 客户端的Http请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:
请求行、请求头部、空行、请求数据,四个部分组成,下图给出了请求报文的一般格式。
在这里插入图片描述

一个典型的HTTP请求示例
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: same-origin
Referer: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=Python%20%20%E6%89%8B%E5%8A%A8%E5%9B%9E%E6%94%B6%E5%9E%83%E5%9C%BE&oq=Python%2520%25E6%2594%25B6%25E5%2588%25B0%25E5%259B%259E%25E6%2594%25B6%25E5%259E%2583%25E5%259C%25BE&rsv_pq=f5baabda0010c033&rsv_t=1323wLC5312ORKIcfWo4JroXu16WSW5HqZ183yRWRnjWHaeeseiUUPIDun4&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=2315&rsv_sug3=48&rsv_sug2=0&rsv_sug4=2736
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=4049831E3DB8DE890DFFCA6103FF02C1;
请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP 0.9:只有基本的文本 GET 功能。
HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP 1.1:在 1.0 基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
HTTP 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须全部小写,而且请求行要独立为 :method、:scheme、:host、:path这些键值对

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。

3.爬虫介绍

3.1什么是爬虫?
  • 简单一句话就是代替人去模拟浏览器进行网页操作
3.2 为什么需要爬虫?
  • • 为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等
3.3 企业获取数据的方式
  • 1.公司的自有数据
  • 2.第三方平台购买的数据 (百度指数、数据堂)
  • 3.爬虫爬取的数据
3.4 Python 做爬虫的优势
  • PHP : 对多线程、异步支持不太好
  • Java : 代码量大,代码笨重
  • C/C++ : 代码量大,难以编写
  • • Python : 支持模块多、代码简介、开发效率高 (scrapy框架)
3.5 爬虫的分类
  • 通用网络爬虫 例如 baidu google yahoo
  • 聚焦网络爬虫: 根据既定的目标有选择的抓取某一特定主题内容
  • 增量式网络爬虫: 指对下载网页采取增量式的更新和只爬行新产生的或者已经发生变化的网页爬虫
  • • 深层网络爬虫: 指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面 例如 用户登录注册才能访问的页面

4.几个概念

4.1 GET和POST
  • GET是从服务器上获取数据,POST是向服务器传送数据
  • GET : 查询参数都会在URL上显示出来
  • POST : 查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来
常见的请求报头

1.Host (主机和端⼝号)
Host:对应⽹址URL中的Web名称和端⼝号,⽤于指定被请求资源的Internet 主机和端⼝号,通常属于URL的⼀部分。

2.Connection (链接类型)
Connection:表示客户端与服务连接类型

  1. Client 发起⼀个包含 Connection:keep-alive 的请求,HTTP/1.1 使⽤ keep-alive 为默认值。
  2. Server收到请求后: 如果 Server ⽀持 keep-alive,回复⼀个包含 Connection:keep- alive 的响应,不关闭连接; 如果 Server 不⽀持 keep-alive,回复⼀个包含 Connection:close 的响应,关闭连接。
  3. 如果client收到包含 Connection:keep-alive 的响应,向同⼀个连接 发送下⼀个请求,直到⼀⽅主动关闭连接。

3.Upgrade-Insecure-Requests (升级为HTTPS请求)
Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资 源时⾃动替换成 https 请求,让浏览器不再显示https⻚⾯中的http请求警报。

4.User-Agent (浏览器名称) User-Agent:是客户浏览器的名称
5. Accept (传输⽂件类型) Accept:指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多⽤途互联⽹邮件扩展))⽂件类型,服务器可以根据它判 断并返回适当的⽂件格式。
Accept: / :表示什么都可以接收。
Accept:image/gif :表明客户端希望接受GIF图像格式的资源;
Accept:text/html :表明客户端希望接受html⽂本。 Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8 :表示浏览器⽀持的 MIME 类型分别是 html⽂本、xhtml和 xml⽂档、所有的图像格式资源。

6.Referer (⻚⾯跳转处) Referer:表明产⽣请求的⽹⻚来⾃于哪个URL,⽤户是从该 Referer⻚⾯访问 到当前请求的⻚⾯。这个属性可以⽤来跟踪Web请求来⾃哪个⻚⾯,是从什么 ⽹站来的等。

7.Accept-Encoding(⽂件编解码格式) Accept-Encoding:指出浏览器可以接受的编码⽅式。编码⽅式不同于⽂件格 式,它是为了压缩⽂件并加速⽂件传递速度。浏览器在接收到Web响应之后先 解码,然后再检查⽂件格式,许多情形下这可以减少⼤量的下载时间。

8.Accept-Language(语⾔种类) Accept-Langeuage:指出浏览器可以接受的语⾔种类,如en或en-us指英 语,zh或者zh-cn指中⽂,当服务器能够提供⼀种以上的语⾔版本时要⽤到。

9.Accept-Charset(字符编码) Accept-Charset:指出浏览器可以接受的字符编码。
10. Cookie (Cookie) Cookie:浏览器⽤这个属性向服务器发送Cookie。Cookie是在浏览器中寄存 的⼩型数据体,它可以记载和服务器相关的⽤户信息
11. Content-Type (POST数据类型) Content-Type:POST请求⾥⽤来表示的内容类型。

服务端HTTP响应

HTTP响应也由四个部分组成,分别是: 状态⾏ 、 消息报头 、 空⾏ 、 响应正文

1 HTTP/1.1 200 OK
2 Bdpagetype: 1 
3 Bdqid: 0xdbeb11ea000cfef4 
4 Cache-Control: private 
5 Connection: keep-alive
6 Content-Encoding: gzip 
7 Content-Type: text/html 
8 Cxy_all: baidu+642857607c537ed21fa04bcfb54ff6ee 
9 Date: Thu, 02 Jan 2020 06:32:55 GMT 
10 Expires: Thu, 02 Jan 2020 06:32:51 GMT 
11 Server: BWS/1.1 
12 Set-Cookie: delPer=0; path=/; domain=.baidu.com 
13 Set-Cookie: BDSVRTM=6; path=/ 
14 Set-Cookie: BD_HOME=0; path=/ 
15 Set-Cookie: H_PS_PSSID=1448_21096_30210_30283_30504; path=/; domain=.ba 16 Strict-Transport-Security: max-age=172800 
17 Traceid: 1577946775028760116215846779410554093300 
18 Vary: Accept-Encoding 
19 X-Ua-Compatible: IE=Edge,chrome=1 
20 Transfer-Encoding: chunked

常⽤的响应报头(了解)

  1. Cache-Control:must-revalidate, no-cache, private。 这个值告诉客户端,服务端不希望客户端缓存资源,在下次请求资源时,必须 要从新请求服务器,不能从缓存副本中获取资源。
  2. Connection:keep-alive 这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的 tcp连接也是⼀个⻓连接,客户端可以继续使⽤这个tcp连接发送http请求。
  3. Content-Encoding:gzip
    告诉客户端,服务端发送的资源是采⽤gzip编码的,客户端看到这个信息后, 应该采⽤gzip对资源进⾏解码。
  4. Content-Type:text/html;charset=UTF-8 告诉客户端,资源⽂件的类型,还有字符编码,客户端通过utf-8对资源进⾏解 码,然后对资源进⾏html解析。通常我们会看到有些⽹站是乱码的,往往就是 服务器端没有返回正确的编码。
  5. Date: Thu, 02 Jan 2020 06:32:55 GMT 这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。 http协议中发送的时间都是GMT的,这主要是解决在互联⽹上,不同时区在相 互请求资源的时候,时间混乱问题。
4.2 URL组成部分
  • URL: 统一资源定位符
  • https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
  • https: 协议
  • new.qq.com: 主机名可以将主机理解为一台名叫 news.qq.com 的机器。这台主机在 qq.com 域名下
  • port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
  • TWF20200/TWF2020032502924000.html 访问资源的路径
  • #anchor: 锚点用前端在做页面定位的
  • 注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)
    • 例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search
    • %E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王
4.3 User-Agent 用户代理
  • 作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果
    User-Agent:
    Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
  • • Mozilla Firefox:(Gecko内核)
4.4 Refer
  • 表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术
4.5 状态码
  • 200 : 请求成功
  • 301 : 永久重定向
  • 302 : 临时重定向
  • 403 : 服务器拒绝请求
  • 404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
  • 500 : 服务器内部请求
4.6 抓包工具

在这里插入图片描述

  • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
  • Console : 控制台 (打印信息)
  • Sources : 信息来源 (整个网站加载的文件)
  • Network : 网络工作(信息抓包) 能够看到很多的网页请求
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值