Python爬虫二:前导知识
端口
- 每个应用程序都有自己的独立标识,那么这个表示我们称之为端口
通讯协议
- 国际组织定义了通讯协议 TCP/IP协议
- 所谓协议就是计算机共同遵守的规定或规则
- HTTP协议(超文本传输协议)(一种通讯协议)(端口号:80)
网络模型
- HTTPS = HTTP + SSL (端口:443)(以安全为目标的HTTP通道)
HTTP的请求和响应
General 全部的
Request URL 请求的地址
Request Method 请求方法,一般情况下网站上是什么方式,爬虫代码就写什么请求方式,但是具体情况具体分析
Status Code 状态码
如果是静态网页,数据都在源码里面
如果是动态网页,这个Request URL的去分析,查找response,去看响应结果
Response Header 服务器的响应
Request Headers 客户端的请求
重要参数:
get 请求的方法 以及目标url参数 一般不加
Host 主机端口号、域名 可加可不加
Connection keep-alive 保持长连接 一般不加
Uer-Agent 用户代理 防止网站来检查ua 反反爬的第一步 加
Accept-Encoding 不要添加 数据会有问题
Cookie 记录用户相关信息(加不加视情况而定)(有时间限制)
referer 表明当前页面从哪个页面过来 视情况而定 有时间限制
Query String Parameters 参数 (在Payload页面下)
爬虫介绍
什么是爬虫
- 简单一句话 就是代替人去模拟浏览器进行网页操作
为什么需要爬虫
-
为其它的程序提供数据源(搜索引擎、应用)
-
数据分析
快乐 采风 高校 风景 …… 种类 收藏 多少会有点不同 视频 你喜欢什么? 数据—>分析
抖音广告越来越多 直播带货非常火 原因是什么?
- 流量大
- 变现
- 热度 非常活跃
-
人工智能
-
学习人工智能(门槛太高)
1.Python高级开发水平
2.数学基础
-
科技公司 高等大学
-
智能家居 无人驾驶 人脸识别 智能语言……
-
-
……
公司获取数据的方式
- 公司自有的
- 第三方数据平台
- 免费的 百度指数
- 付费的 数据堂
- 爬虫爬取的数据
Python做爬虫的优势
- PHP:对多线程、异步支持不太好
- Java:代码量大、打码笨重
- C/C++:代码量大,难以编写
- Python:支持模块多、代码简洁、开发效率高(scrapy框架)
爬虫分类
- 通用网络爬虫 例如 百度 谷歌
- 聚焦网络爬虫 根据既定的目标 有选择的抓取某一特定主题的内容
几个概念
get和post方法
-
get特点
一般情况下只从服务器获取数据,没有对服务器产生影响,通常都是get请求
请求参数可以在url地址上显示出来
-
post特点
向服务器发送数据(登录、上传文件……)
会对服务器产生影响那么通常都是使用的是post请求
请求参数不会再url地址之上显示出来
URL
全球统一资源定位符
https://gufanstudy.github.io/archives/
https 网络协议
gufanstudy.github.io 域名
archives/ 访问资源路径
anchor 锚点(前端页面定位)
User-Agent
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
作用:记录了用户的浏览器,操作系统登,为了让用户更好的获取HTML页面效果
一般会作为反反爬的第一步,80%的网站都会检查
Cookie
记录用户相关的信息
http本身是无状态的,服务器无法判断用户的身份。对同一个网站发起多次请求,服务器无法判断是否来自同一个人
作用:
- 反反爬
- 模拟登录
状态码
部分:
- 200:请求成功
- 301:永久重定向
- 302:临时重定向
- 404:请求失败
- 500:服务器内部请求
重定向:
一个网址定向到另一个网址
抓包工具
谷歌浏览器自带,右键-检查 或 F12
Elements 元素
网页源代码 最终渲染结果
用于提取数据 分析数据
Console 控制台
后期分析JS代码,根据打印结果,分析代码
前期用不到
Sources 资源
信息的来源
整个网站加载的资源
分析JS代码时使用,调试,打断点
前期用不到
Network 网络工作
数据抓包