| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 第一章 爬虫基础 -> 正文阅读 |
|
[网络协议]第一章 爬虫基础 |
1.1HTTP原理URI和URLURI:统一资源标志符 URL:统一资源定位符 网站链接既是一个URL又是一个URI,通过其唯一指定了它的访问方式,其中包括访问协议https、 访问路径(/根目录)和资源名称,通过这个链接就可以从互联网上找到这个资源。 URL是URI子集,子集还包括URN(只命名资源而不定位资源,比如一本书的ISBN号标识一本书,没有指定哪里可以定位这本书) 超文本网页源代码HTML就是超文本 HTTP和HTTPS协议类型:URL(网站链接)开头会有http或https等等,它们就是协议类型 http一般可直接访问 https即使http的安全版,所以在我们平常访问此类网站会被提示该链接不是私密链接,所以我们在爬取这样的网站时需要设置忽略证书的选项,负责会报错 HTTP请求过程我们在浏览器输入一个URL,即是向网站所在服务器发送一个请求,然后网站服务器接收请求后处理和解析,返回对应的响应(包括源代码等),接着传回浏览器(进行对源代码解析等工作)。 请求有客户端向服务端发出,通常分为4部分:请求方法,请求网址,请求头,请求体 1.请求方法GET和POSTGET:在浏览器中直接输入URL回车,发起了一个GET请求,请求参数会直接包含到URL里,例如搜索python就会将python写入URL里 数据可以在URL里看出来 1024字节 POST:大多以表单的方式,例如一个登陆表单包括账号和密码 数据不会在URL里,在请求体中 无字节限制 举例: 登录时需要用户名和密码,包含敏感信息,使用GET方法就会把信息暴露在URL中,所以使用POST方法 2.请求网址统一资源定位符URL 3.请求头请求头是请求的重要组成部分,写爬虫时,大部分情况都需要设定请求头 常用头信息: 客户端可接受的语言类型 客户端接受的内容编码 UA,特殊的字符串头,可以伪装成浏览器 还有等等信息 4.请求体请求体一般承载内容为POST请求的表单数据,对于GET请求为空 响应由服务器返回给客户端,有响应状态码,响应头,响应体组成 1.响应状态码服务器响应状态 2.响应头响应产生时间 响应内容编码 文档类型,返回数据类型等等 3.响应体最重要的内容 请求网页,响应体委HTML编码;请求图片,响应体为图片二进制数据;爬虫解析的内容就是响应体。 爬虫时,我们主要通过响应体得到网页源代码、JSON数据等,然后从中提取 1.2网页基础三大部分组成——HTML(骨架),CSS(皮肤),JavaScript(肌肉) 网页组成HTML超文本标记语言 例如img表示图片,video表示视频,段落用p表示等等 网页就是由各种标签嵌套组合而成 CSS网页页面排版样式标准,是页面更加美观 JavaScript与用户之间的交互 节点树及节点间关系HTML中,所有标签定义的内容都是节点,构成一个HTML DOM树 选择器CSS选择器会根据不同的节点设置不同的样式规则 #+id名? ? ?#container .+class名? .wrapper 直接写标签名? ?h2 三种形式筛选:id,class,标签名筛选 嵌套选择 选择器之间加上空格表示嵌套关系,如果不加空格则表示并列关系 #container .wrapper p:表示选择id为container节点,选中其内部class为wrapper的节点,再进一步选中其内部的p节点。 div#container .wrapperp.text:表示选择id为container的div节点,然后选中其内部的class为wrapper的节点,然后再进一步选择其内部class为text的p节点 还有另外一种选择器就是XPath 1.3爬虫原理访问一个网页后,继续获取后续网页,网站的数据就可以被抓取下来 爬虫概述爬虫就是获取网页并提取和保存信息的自动化程序 1.获取网页获取网页的源代码,关键部分就是构造一个请求并发送给服务器,然后接受响应并解析 2.提取信息提取我们想想要的数据 最常用的方法就是正则表达式提取,还可根据网页节点属性,css选择器,XPath来提取网页信息的库有lxml,Beautiful Soup等 3.保存数据简单保存为TXT文本或JSON文本 或者保存到数据库 MySQL MongoDB 4.自动化程序我们写的程序 能抓怎样的数据网页中我们看到各种各样的信息 JavaScript渲染页面渲染出来的页面可能是个空壳,需要别的库来实现模拟渲染 1.4会话和cookies在浏览网站过程中经常会出现需要登陆的情况,有些页面只有在登录后才可以访问,而且登录后可以访问很多次网站,但是有时候过段时间需要重新登录。还有一些网站在打开浏览器就登录了,而且很长时间都不失效。这就与上述标题相关。 静态网页和动态网页动态网页是现在大部分网页的形式 无状态HTTPHTTP的无状态是服务器不知道客户端是什么状态,当我们向服务器发送请求时,服务器解析并返回响应的过程,这个前后状态是不会被服务器记录的。 用于保持HTTP连接状态的分别是会话和cookies 会话:服务器端,用来保存用户的会话信息 cookies:客户端即浏览器端,浏览器在下次访问网页时会附带上cookies发送给服务器 可以理解为登录页面,cookies包含了登录凭证,下次请求携带cookies就不用重新输入账号密码。 因此在爬虫中,处理登录才能访问的页面,需要将登录成功后获取的cookies放在请求头里面,就不用模拟登录了。 cookies会话维持:客户端第一次请求服务器时,服务器会返回一个响应头带有set-cookies字段给客户端,用来标记是哪一个客户,客户端浏览器会把cookies保存下来,在下一次请求该网站时,浏览器会携带cookies一起提交给服务器。cookies携带了会话信息,服务器检查该cookies就能找到相应的会话,再返回该会话中用户状态可以查看的网页内容,再交给浏览器解析。 会话cookie:把cookie放在浏览器内存里,浏览器关闭则失效 持久cookie:将cookie保存在客户端硬盘里,下次还可继续使用 两者区别就是cookie设置的失效时间不同 持久化登录网站就是把cookie有效时间和会话有效期设置的长,下次我们访问时,cookie仍然有效,不用重新登录, 1.5代理的基本原理基本原理代理就是在客户端和服务器端搭起的一座桥梁,本来是客户端直接发送请求给服务器端,有了代理以后,就是客户端-->代理-->服务器端。这时,服务器识别的IP就不是我们本机的IP,就实现了IP伪装。 代理的作用1.访问平时不能访问的站点 2.访问一些单位或团体内部资源 3.提高访问速度 4.隐藏真实IP 爬虫代理爬虫爬取速度过快可能会导致同一个IP访问频繁而被封锁,使用代理隐藏真实的IP,在爬虫中不断更换代理,就不会被封锁 代理分类根据协议分 根据匿名程度分 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:47:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |