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实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Python实现剪贴板历史管理器

《Python实现剪贴板历史管理器》在日常工作和编程中,剪贴板是我们使用最频繁的功能之一,本文将介绍如何使用Python和PyQt5开发一个功能强大的剪贴板历史管理器,感兴趣的可以了解下... 目录一、概述:为什么需要剪贴板历史管理二、功能特性全解析2.1 核心功能2.2 增强功能三、效果展示3.1 主界面

Python与Java交互出现乱码的问题解决

《Python与Java交互出现乱码的问题解决》在现代软件开发中,跨语言系统的集成已经成为日常工作的一部分,特别是当Python和Java之间进行交互时,编码问题往往会成为导致数据传输错误、乱码以及难... 目录背景:为什么会出现乱码问题产生的场景解决方案:确保统一的UTF-8编码完整代码示例总结在现代软件

Python+Tkinter实现Windows Hosts文件编辑管理工具

《Python+Tkinter实现WindowsHosts文件编辑管理工具》在日常开发和网络调试或科学上网场景中,Hosts文件修改是每个开发者都绕不开的必修课,本文将完整解析一个基于Python... 目录一、前言:为什么我们需要专业的Hosts管理工具二、工具核心功能全景图2.1 基础功能模块2.2 进

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的