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迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python