Python学习之旅
Python核心编程爬虫篇2021.02.01
指导教师:逻辑教育讲师Jerry
一、爬虫前导知识
1.端口
- 数据通讯分步:
- ①找到对方IP
- ②数据发送到对方指定应用程序上。为了识别每个应用程序,给网络应用程序用数字进行了标识,我们把这个数字标识称作端口(通常称为逻辑端口)
- ③定义通讯规则。我们一般称之为通讯协议
2.通讯协议
- 所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
- 国际组织定义了通用的通信协议
TCP/IP
协议(TCP/IPv4
版本,TCP/IPv6
版本) HTTP
又叫做超超本传输协议(是一种通信协议)HTTP
它的端口是80
HTTPS
:HTTP + SSL
是以安全为目的的HTTP
通道。SSL
主要用于web
的安全传输协议,信息的加密过程就是在SSL
中完成
3.网络模型
- 后期更新了新的参考模型 TCP/IP参考模型
4.HTTP的请求与响应
HTTP
通信由两部分组成: 客户端请求消息 与 服务器响应消息- 请求消息格式包括请求行、请求头部、空行、请求数据四部分。
二、爬虫介绍
1.什么是爬虫
- 简单来说就是代替人去模拟浏览器进行网页操作
2.为什么需要爬虫
- 为其它程序提供数据源,如搜索引擎;数据分析;人工智能等
3.企业获取数据的方式
- ①公司自有数据
- ②第三方平台购买(百度指数、数据堂等)
- ③爬虫爬取
4.Python做爬虫的优势
- 支持模块多、代码简洁、开发效率高(
scrapy
框架)
5.爬虫分类
- 通用网络爬虫 例如 baidu、google、yahu
- 聚焦网络爬虫: 根据既定的目标有选择的抓取某些特定主题内容
- 增量式网络爬虫: 指对下载网页采取增量式的更新和只爬取新产生的或者已经发生变化的网络爬虫
- 深层网络爬虫: 指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面,例如:用户登录注册才能访问的页面
6.爬虫的几个概念
GET
和POST
GET:
查询参数都会在url
地址上面显示出来,一般情况下只是从服务器上获取数据,没有对服务器造成影响,这种方式就是一个get
请求POST
:它的查询参数不会显示在url
地址的上面,而隐藏在Form表单里面,且post
请求会对服务产生影响
URL
(统一资源定位符)的组成分https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
https
:协议new.qq.com
: 主机名可以将主机理解为一台名叫new.qq.com
的机器。这台主机在qq.com
域名下port
端口号:80
在new.qq.com
的后面有个80
可以省略omn/TWF20200/TWF2020032502924000.html
访问资源路径#anchor
:锚点用于前端在做页面定位的- 注意:在浏览器请求一个
url
,浏览器会对这个url
进行一个编码。(除英文字符、数字和部分标识其他的全部使用%
加 十六进制码进形编码),例如:https://tieba.baidu.com/f?ie=utf- 8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search
其中%E6%B5%B7%E8%B4%BC%E7%8E%8B
=海贼王
User-Agent
用户代理User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400
- 记录了浏览器的详细信息,包括操作系统、内核、浏览器版本等
- 反反爬的第一步
refer
:表明该请求的url来源。可以用来做反爬的技术。
Referer: https://daohang.qq.com/?fr=hmpage
cookie
记录服务器用户相关信息(用于确定用户身份,例如人人账号登录信息)http
协议是无状态的。所谓无状态是指服务器无法判断用户的身份cookie
实际上是一小段文本信息(key-value
字典键值对格式)- 反反爬 例如 12306、百度、模拟登陆
7.抓包工具
Elements
:元素、网页源代码,可提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)Console
: 控制台 (打印信息,使用较少)Sources
: 信息来源 (整个网站加载的文件,使用较少)NetWork
: 网络共作(信息抓包) 能够看到很多的网页请求
8.状态码
200
:请求成功301
:永久重定向302
:临时重定向404
:请求失败(服务器无法根据客户端的请求找到资源(网页))500
:服务器内部请求