Python爬虫教程 - 100天从新手到大师(01Day)

2023-10-20 02:50

本文主要是介绍Python爬虫教程 - 100天从新手到大师(01Day),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 什么是爬虫
    • 1.1 爬虫的本质
    • 1.2 爬虫难点
    • 1.3 能否爬取付费内容?是否违法?
  • 2. 爬虫的分类
  • 3. 爬虫的基本流程
  • 4. Robots协议
  • 5. 网络请求的发送和响应的接收
  • 6. 介绍http协议和https协议
    • 6.1 http和https的概念
    • 6.2 浏览器发送HTTP请求的过程(重点理解)
  • 7. HTTP请求的形式
  • 8. HTTP常见请求头
  • 9. 响应状态码(status code)
  • 10. 怎么查看客户端和服务器的交流过程
  • 11. 字符编码的问题
  • 小结


1. 什么是爬虫

爬虫(网页蜘蛛,网络机器人)

1.1 爬虫的本质

爬虫的本质就是模拟客户端(正常的用户)发送网络请求,获取对应的响应数据。

能够使用爬虫获取(爬取)的数据理论上说,只要是正常用户能够看到的,能够接触到的数据,我们都是可以抓取到的可见皆可爬

1.2 爬虫难点

主要是能否够成功的抓取到数据

反爬:根据数据的重要性,反爬强度不一

爬虫:模拟客户端 去发送网络请求 给 服务端
服务端(后端) > 反爬 … 识别爬虫 ,然后禁止爬虫访问

为什么服务端要做反爬:
1.保护数据,价格相关:沃尔玛
2.网站的后端 部署在云服务器上面 ,网站就有并发量的问题,千万级的并发量
防止网络攻击
阿里云 全国各地的机房(云服务器) >> 双十一这天

反反爬:

–爬虫程序,3秒钟访问别人一百次 封禁你,不允许你再继续访问
换脸:变脸 A A1 A2 A3 - A100

1.3 能否爬取付费内容?是否违法?

爱奇艺VIP视频
正常的用户:登录 充值 ,变成尊贵的VIP用户 观看VIP视频
有vip账号 爬虫才能抓取视频数据,保存到本地

没有明文法律规定爬虫是违法

爬虫也不是黑客(合法公民)

爬虫 >> 数据收集 >> 被利用自身的盈利,或者说损害别人的利益 触及到违法行为 公民个人信息
携程 >> 爬虫 >> 抢票
携程这个抢票 也是利用了 爬虫来盈利 票钱 保险费 加速包 服务费 法律意识极其强,我们没有利用爬虫去收费,我们收取的是服务费

2. 爬虫的分类

在这里插入图片描述

3. 爬虫的基本流程

"""
爬虫的基本流程
"""# url:网络资源定位符
# www.baidu.com     www.sina.com  url
# 1.确认目标的url(地址)# 2.发送网络请求,(模拟正常的用户),得到对应的响应数据# 3.提取出特定的数据# 4.保存,本地,入库(入数据库)

在这里插入图片描述

  1. 向起始url发送请求,并获取响应
  2. 对响应进行提取
  3. 如果提取url,则继续发送请求获取响应
  4. 如果提取数据,则将数据进行保存

4. Robots协议

"""
Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的一般约定。怎么查看一个网站的robots协议
网站服务器:门口挂了一个牌子,告诉爬虫,哪些东西 可以抓取,哪些东西不可以抓取
域名/robots.txt
www.taobao.com/robots.txt
"""

在百度搜索中,不能搜索到淘宝网中某一个具体的商品的详情页面,这就是robots协议在起作用

例如:淘宝的robots协议

5. 网络请求的发送和响应的接收

  1. 电脑上 通过谷歌浏览器 输入网址url www.baidu.com,发送给了DNS服务器
  2. DNS服务器是啥:
    网络海洋中,怎么标记一台特定的电脑,服务器
    GPS > 经纬度,北纬 100度 西经 100度
    IP地址:举例百度服务器(11.11.11.11)
    平常我们使用的是www.baidu.com的域名去访问百度
    点外卖,北纬 100度 西经 100度
    阳光小区 A栋403
    给机器看的IP 11.11.11.11
    给人看的域名url www.baidu.com
    DNS作用:www.baidu.com >> 11.11.11.11
    通过域名解析出对应的IP地址
    DNS服务器通过我们输入的域名解析出IP地址
  3. 拿着IP地址11.11.11.11去百度首页的服务器,仓库
  4. 返回给咱们一些数据 html+js+css+jpg 组成 了我们看到的网页

html:文字样式
js:事件 点击事件 鼠标的点击 鼠标的滑过 鼠标的停止
css:渲染工具,控制文字的大小颜色 控制图片的形状等等

jpg:png 图片

6. 介绍http协议和https协议

6.1 http和https的概念

在这里插入图片描述

“”"

当我们向服务器(仓库)请求数据的时候,需要遵循http协议 https协议 默认的规则:
领取人:
电话:
部门:
工号:
负责人:
当我们向服务器(仓库)请求数据的时候,需要某些信息的记录(填写),那么才可以拿到数据

遵循http协议 https协议 浏览器自动帮咱们填写http协议 https协议 http https 多了一个s 多了一层加密
优点更加的安全 缺点是效率受影响

“”"

  1. HTTP
    超文本传输协议
    默认端口号:80
  2. HTTPS
    HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
    默认端口号:443

6.2 浏览器发送HTTP请求的过程(重点理解)

在这里插入图片描述

http请求的过程

浏览器先向地址栏中的url发起请求,并获取相应在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应

浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应

从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染

注意 :

但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样
所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取

7. HTTP请求的形式

在这里插入图片描述

8. HTTP常见请求头

  1. Host (主机和端口号)
  2. Connection (链接类型)
  3. Upgrade-Insecure-Requests (升级为HTTPS请求)
  4. User-Agent (浏览器名称)
  5. Accept (传输文件类型)
  6. Referer (页面跳转处)
  7. Accept-Encoding(文件编解码格式)
  8. Cookie (Cookie)
  9. x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)

HTTP重要的响应头

Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)

9. 响应状态码(status code)

常见的状态码:

200:成功
302:临时转移至新的url
307:临时转移至新的url
404:找不到该页面
500:服务器内部错误
503:服务不可用,一般是被反爬

10. 怎么查看客户端和服务器的交流过程

1.鼠标右键点击网页,点击(检查),按F12
2.找到network点击,里面存放有网络数据的信息
3.右键'重新加载',访问百度首页
4.很多的数据包(html+js+css+jpg)就组成了我们看到的网页
5.寻找,ALL里面就是全部的数据包
6.一般,整体的骨架的数据,就是第一个(1)Headers:请求的信息request 响应的信息 response(2)Preview:预览效果是什么样,图片的缺失代表需要其它的数据包填充(3)Response:数据包的类型是html,里面就是这个html数据包的源代码7.Genaral:整体的信息描述(1)Request URL: 该数据包的域名(2)Request Method: 请求的方式(3)Status Code: 状态码的东西(4)Remote Address: IP:端口8.(了解即可)Response Headers:响应头(响应信息)
服务器需要遵循这种规则协议,浏览器才能够解析出来,并且展示
1300  2100 八个小时
东八区的北京时间9.(重点)Request Headers:请求头(请求信息)
我们(浏览器,爬虫程序)向服务器发送请求
遵循http协议
(以百度首页为例,每个网站不一样)
Accept: (了解)我们接收哪些数据类型
Accept-Encoding:(了解)浏览器支持的编码类型
Accept-Language: (了解)接受的语言Cookie(重点): 记录会话信息,记录和服务器的交流信息包括:用户名 ,身份信息(下次访问不用填写账号密码)Host: 主机地址 域名 urlUser-Agent(重点): 你的客户端的信息,用户代理

11. 字符编码的问题

"""
字符编码的问题python php java c c++
二进制  >> 计算机网络数据的传递 >> 字节每种文字都有自己的字符集
数据是不是从服务器来
首先,服务器就要把python数据的类型转换成字节类型,才能放到网上进行传输
"""
# python数据类型(string) >> bytes类型
# encode# 从网上拿数据 bytes >> python的数据类型
# decodedata = '海风'      # 编码
bytes_data = data.encode()   # utf-8
print(bytes_data)   # 字节数据
print(type(bytes_data))# 解码 把看不懂的解码成看得懂的
str_data = bytes_data.decode()  # utf-8
print(str_data)   # 字符串数据
print(type(str_data))"""
encode decode 需要格式一样 
编码格式是什么,那么解码格式就是什么,才能够成功的解码
"""

小结

  1. 记忆 http、https的概念和区别:
    http: 超本文传输协议
    https: HTTP + SSL,即带有安全套接字层的超本文传输协议

  2. 记忆 浏览器发送http请求的过程:
    浏览器先向地址栏中的url发起请求,并获取相应
    在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响 应内容中的顺序依次发送其他的请求,并获取相应的响应
    浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
    从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改

  3. 记忆 http请求头的形式:

GET /item/503/1227315?fr=aladdin HTTP/1.1
Host: www.baidu.com
......
  1. 记忆 http响应头的形式 :
HTTP/1.1 200 OK
Connection: keep-alive

  1. 了解 http响应状态码

200:成功
302:临时转移至新的url

这篇关于Python爬虫教程 - 100天从新手到大师(01Day)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244112

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核