爬虫-day01

上篇

1. 数据分析的一般流程

在这里插入图片描述

2. 为什么需要爬虫?

爬虫程序是采集数据的一种方式。

爬虫写得好,juzi进的早。

爬虫写得好,laofan吃的饱。

3. 爬虫的流程(重点)

在这里插入图片描述

4. HTTP 请求过程(重点)

HTTP 单次请求过程

在这里插入图片描述

浏览器的渲染过程

  1. 浏览器通过域名解析服务器(DNS)获取IP地址
  2. 浏览器先向IP发起请求,并获取响应
  3. 在返回的响应内容(html)中,可能会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
  4. 浏览器每获取一个响应就对展示出的结果进行添加(加载),js、css等内容可能会修改页面的内容,js也可以重新发送请求,获取响应
  5. 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染

注意:爬虫默认不具备渲染能力,程序让它请求哪个地址,它就只请求那个地址,爬虫提取数据应该以对应请求地址的响应为准。

5. 完整 URL 地址的格式(重点)

在这里插入图片描述

https://news.baidu.com/
http://www.chinanews.com/gn/shipin/cns-d/2021/06-30/news893297.shtml

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BC%A0%E6%99%BA&fenlei=256&rsv_pq=a022b40d0004b304&rsv_t=2694IiGer%2F3sERQbCKrfdfhb3mxsAJMY5glCVPCKnYM8CXsrv9o65b3YEiU&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=7&rsv_sug1=9&rsv_sug7=100&rsv_btype=i&inputT=16193&rsv_sug4=16194
  
http://mp-meiduo-python.itheima.net/

6. HTTP 请求报文格式

在这里插入图片描述

请求方式描述
GET请求指定的页面信息,并返回实体主体。
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。

注意:上面四种请求方式中,GET 请求时不能携带请求体

常见请求头

请求头作用
CookieCookie状态保持数据
User-Agent浏览器名称和信息
Referer页面跳转处

7. HTTP 响应报文格式

在这里插入图片描述

响应头作用
Location这个头配合302状态码使用,告诉用户端找谁。
Set-Cookie设置和页面关联的Cookie

常见的服务器响应状态码:

状态码描述信息
200请求成功
302跳转,重定向,新的url地址会在响应头Location中给出
403资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
404找不到页面
500服务器内部错误
503服务器由于维护或者负载过重未能应答,在响应中可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码

8. 状态保持机制

Cookie机制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Session机制

典型应用:记住用户的登录状态。

在这里插入图片描述

下篇

1. 浏览器开发者工具(重点)

浏览器开发者工具

在这里插入图片描述

浏览器无痕浏览模式

查看第一次请求某个地址时,请求保存中包含的信息和响应时包含的信息。

2. requests 模块简介

requests 是用 python 语言编写的一个开源的HTTP库,可以通过 requests 库编写 python 代码发送网络请求。

# 安装 requests 包
pip install requests

3. requests 模块发送 GET 请求(重点)

在这里插入图片描述

4. response 响应内容获取(重点)

response.text和response.content的区别

response.content

  • 返回类型: bytes
  • 解码类型: 没有指定,原始响应内容,没有进行解码
  • 指定编码方式: response.content.decode(‘指定编码字符集’)
  • 注意: response.content.decode() 默认使用 utf-8 编码方式

response.text

  • 返回类型: str
  • 解码类型: requests 模块自动根据 HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
  • response.text = response.content.decode(‘推测出的编码字符集’)

获取响应内容的推荐次序

  • response.content.decode()
  • response.content.decode(‘gbk’)
  • response.text

以上三种方法从前往后尝试,能够100%的解决所有网页解码的问题,

5. response 响应对象的其他属性

在这里插入图片描述

6. 案例-保存网络图片(单张)

在这里插入图片描述

7. 案例-保存网络图片(多张)

网页地址:https://www.tupianzj.com/meinv/20210219/224797.html

思路分析

# ① 先请求 https://www.tupianzj.com/meinv/20210219/224797.html,获取响应内容
# ② 从上一步的响应内容中提取所有图片的地址
# ③ 遍历每一个图片地址,向每个图片地址发送请求,并将响应的内容保存成图片文件

代码实现

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是方丈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值