爬虫的前导知识
· 端口
· 数据通信的原理,数据传输分为几步?
· 找到对方IP
· 数据要发送到对方指定的应用程序上。为了标识这些应用程序,给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做端口,一般叫“逻辑端口”
· 定义通讯规则,这个通讯规则一般被称为协议
· 通讯协议
· 国际组织定义了通信协议 TCP / IP
· 所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
· 网络模型
· HTTP超文本传输协议(是一种通信协议),端口号:80
· HTTPS = HTTP + SSL,端口号:443,HTTP的安全版本
· HTTP的请求和响应
· HTTP通信由两部分组成:客户端请求消息 与 服务器响应消息
· 当用户在浏览器的地址栏输入一个URL并按回车之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get” 和 “Post” 两种方法
· 当在浏览器输入URL时,浏览器发送一个Request请求去获取对应URL的html文件,服务器把Response文件对象发送回浏览器。
· 浏览器分析Response中的HTML, 发现其中引用了很多其它文件,比如 Image文件,CSS文件,JS文件。浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
· 当所有的文件都下载成功后,网页会根据HTML语法结构,完整地显示出来。
· 网页Network中需要掌握的部分:
· General部分:总体信息
· Request URL:请求的网址
· Request Method:请求的方式,主要有GET 和 Post 方式
· Status Code:状态码
· Response headers部分:服务器的响应
· Request headers部分:服务器的请求
· host:域名
· Connection:keep-alive 保持常连接
· User-Agent:用户代理,电脑系统,浏览器
· Referer:请求的数据来源,请求的数据是从哪里来的
· Cookies:保存的用户信息
· Query String Parameter部分:参数信息
· 爬虫简介
· 什么是爬虫
· 代替人去模拟浏览器进行网页操作
· 为什么需要爬虫
· 提供数据源
· 数据分析
· AI人工智能(智能家居、无人驾驶、智能语音、智能导航、人脸识别......)
· PC端互联网时代(2010年前局域网--> 宽带-->光纤)-->移动端互联网(2010-2015 3G / 4G)
-->大数据互联网时代(2015年至今)--> AI人工智能时代(未来)
· 企业获取数据的方式
· 公司自有的数据
· 第三方平台购买的数据(百度指数、数据堂)
· 爬虫爬取的数据
· Python做爬虫的优势
· PHP: 对多线程、异步支持不太好
· Java: 代码量大,难以编写
· C/C++: 代码量大,难以编写
· Python: 支持模块多、代码简洁、开发效率高(Scrapy框架)
· 爬虫的分类
· 通用网络爬虫,例如baidu google yahu
· 聚焦网络爬虫:根据既定的目标有选择地抓取某一特定主题内容
· 几个概念
· GET 和POST
· GET: 查询参数都会在URL上显示出来
· POST:查询参数和需要提交数据是隐藏在Form表单里的,不会再URL地址上显示出来, 比如一些需要登录账号login的网站
· URL组成部分
· URL:Uniform Resource Locator,统一资源定位器
· 举例 URL:https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
· https: 协议
· new.qq.com:主机名可以将主机理解为一台名叫news.qq.com的机器。这台主机在qq.com域名下
· port 端口号:80 /new.qq.com后面有个:80,可以省略
· omn/TWF20200/TWF2020032502924000.html:访问资源的路径
· #anchor:锚点在前端用作页面定位的
· 注意:在浏览器请求一个URL,浏览器会对这个URL进行16进制编码。(除了英文字母、数字和部分表示,其它的全部使用%+hex码进行编码
比如,https://www.baidu.com/s?wd=%E6%B5%B7%E8%B4%BC%E7%8E%8B
其中,%E6%B5%B7%E8%B4%BC%E7%8E%8B 就是 “海贼王”三个中文字的16进制码,每3个“ % ” 十六进制为一个汉字
· User-Agent 用户代理
· 作用:记录用户的浏览器、操作系统,为了让用户更好地获取HTML页面效果
· User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
· Gecko: 内核
· Referer
· 表明当前这个请求是从哪个URL过来的,一般情况下可以用来做反爬技术
· 状态码
· 200:请求成功
· 301:永久重定向
· 302:临时重定向
· 404:请求失败(服务器无法根据客户端的请求找到资源)
· 500:服务器内部请求
· 抓包工具
· Elements: 元素 网页源代码,提取数据和分析数据(有些数据经过特殊处理,因此并不都是准确的)
· Console: 控制台 (打印信息)
· Sources:信息来源(整个网站加载的文件)
· Network:网络工作(信息抓包)能够看到很多的网页请求