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

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下