本文主要是介绍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.保存,本地,入库(入数据库)
- 向起始url发送请求,并获取响应
- 对响应进行提取
- 如果提取url,则继续发送请求获取响应
- 如果提取数据,则将数据进行保存
4. Robots协议
"""
Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的一般约定。怎么查看一个网站的robots协议
网站服务器:门口挂了一个牌子,告诉爬虫,哪些东西 可以抓取,哪些东西不可以抓取
域名/robots.txt
www.taobao.com/robots.txt
"""
在百度搜索中,不能搜索到淘宝网中某一个具体的商品的详情页面,这就是robots协议在起作用
例如:淘宝的robots协议
5. 网络请求的发送和响应的接收
- 电脑上 通过谷歌浏览器 输入网址url www.baidu.com,发送给了DNS服务器
- 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地址- 拿着IP地址11.11.11.11去百度首页的服务器,仓库
- 返回给咱们一些数据 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 多了一层加密
优点更加的安全 缺点是效率受影响
“”"
- HTTP
超文本传输协议
默认端口号:80 - 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常见请求头
- Host (主机和端口号)
- Connection (链接类型)
- Upgrade-Insecure-Requests (升级为HTTPS请求)
- User-Agent (浏览器名称)
- Accept (传输文件类型)
- Referer (页面跳转处)
- Accept-Encoding(文件编解码格式)
- Cookie (Cookie)
- 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:响应头(响应信息)
服务器需要遵循这种规则协议,浏览器才能够解析出来,并且展示
13:00 21:00 八个小时
东八区的北京时间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 需要格式一样
编码格式是什么,那么解码格式就是什么,才能够成功的解码
"""
小结
-
记忆 http、https的概念和区别:
http: 超本文传输协议
https: HTTP + SSL,即带有安全套接字层的超本文传输协议 -
记忆 浏览器发送http请求的过程:
浏览器先向地址栏中的url发起请求,并获取相应
在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响 应内容中的顺序依次发送其他的请求,并获取相应的响应
浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改 -
记忆 http请求头的形式:
GET /item/503/1227315?fr=aladdin HTTP/1.1
Host: www.baidu.com
......
- 记忆 http响应头的形式 :
HTTP/1.1 200 OK
Connection: keep-alive
…
- 了解 http响应状态码
200:成功
302:临时转移至新的url
这篇关于Python爬虫教程 - 100天从新手到大师(01Day)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!