爬虫 基础理论知识(一)

    xiaoxiao2023-10-03  134

    一、爬虫的背景知识

    企业产生的数据:大的公司会根据用户的行为记录数据,数据会被大公司利用,用来做数据的分析 数据平台的数据:数据公司将数据包装成API形式,贩卖数据 政府和机构的数据:政府公开的一些数据 数据咨询平台的数据:为企业和公共机构提供有关战略、组织、运营和技术方面的咨询

    二、什么是爬虫?

    就是一段自动抓取互联网数据的程序或脚本

    三、网页的三大特性

    1.每一个网页都有自己唯一的URL地址(统一资源定位符)2.网页都是通过HTML(超文本)来展示数据的3.网页是通过HTTP/HTTPS(超文本传输协议)来传输html的

    四、爬虫最基本的步骤

    1.寻找目标url,发起请求2.获取请求的响应结果,分析响应结果3.从响应结果中提取数据 a.第一部分,从网页中提取的目标数据b.如果存在新的url地址,则提取,继续发起请求 4.所有的目标url全部请求完毕,爬虫结束

    五、数据的用途

    1.可以爬取数据,写自己的网站2.搜索引擎3.购物助手4.日常数据的基本分析(知乎数据冰山专栏)

    六、课外知识

    做爬虫的语言有:python java php c/c++ switch …

    java:是python写爬虫的最大的竞争对手,java的发展周期长,生态圈都比较完善,页有很多第三方库的支持,java的代码量比较大,开发的成本比较高,后期维护也比较繁琐

    php:php曾经被叫世界上最好的语言(一般用来后端的),也可以用来写爬虫,但是对多任务的支持不太好,爬虫对效率要求比较高,所以一般不适合php写爬虫

    c/c++:比较偏向于底层的语言,代码的运行效率高,学习的门槛比较高,代码成型比较慢

    python:代码比较简单易懂,并且第三方的库有很多,python自带的urllib网络请求模块,requests网络请求模块,网络解析库xpath,BeautifulSoup4,pyquery等等,还有成熟高效稳定的爬虫框架scrapy,pyspider等等,还支持分布式爬虫(scrapy-redis)框架

    七、爬虫的分类

    1.通用爬虫:是搜索引擎的重要组成部分

    作用和目的:尽可能全的将互联网上所有的网页下载到本地,通过分词,去噪等进行预处理,处理后进行数据的持久化(镜像备份),然后提供检索系统

    获取数据的步骤:

    a.获取一些种子url,存入待爬取队列b.从待爬取队列中取出url,发起请求,将获取的响应结果进行处理,之后存到本地,然后将已爬取的url放入已爬取队列c.从响应结果中获取外链(url),将url放入待爬取队列中

    搜索引擎如何获取新网站的url:

    a.向搜索引擎直接提交url地址b.通过网页外链c.跟DNS服务商合作,新网站注册的域对应的网站将会迅速被搜索引擎抓取

    搜索引擎需要遵守robot协议:

    是一个规范,网站通过robot协议告诉搜索引擎哪些页面可以爬取,哪些页面不可以爬取User-agent:Baiduspider(搜索引擎爬虫名称)Allow:/article(允许爬取的url)Disallow:/product/(不允许爬取的url)

    搜索引擎的缺点:

    a.只能够获取简单的文件数据,大型的二进制数据(音频,视频)都不能获取b.搜索引擎搜索的结果千篇一律,没有办法根据特定的用户,获取特定的数据c.搜索引擎搜索结果99%并没用

    2.聚焦爬虫:是面向主题,面向需求的爬虫,只获取跟需求相关的数据

    八、七层协议

    目的:实现不同的系统互联之间的数据通讯,实现数据的传输

    1.应用层: 网络服务与最终用户的一个接口。协议有:HTTP HTTPS FTP DNS …HTTP(超文本传输协议):实现从网络传输超文本数据到本地浏览器的传送协议HTTPS:是HTTP的安全版本,在HTTP的基础上添加了一个SSL(安全套接字层)层,用于web端的安全传送,在传输层对网络连接进行加密,构建了一个安全的数据传输通道,保证网站的真实性和有效性HTTPS协议需要有一个证书(CA证书):由专门的证书机构颁发的,也可以自己生成,但是访问的时候会提示不安全 2.表示层: 主要功能是定义数据格式及加密即对上层数据或信息进行变换以 保证一个主机应用层信息可以被另一个主机的应用程序理解,并 按照一定的格式传送给会话层 3.会话层: 建立、管理、终止会话。(在五层模型里面已经合并到了应用层)对应主机进程,指本地主机与远程主机正在进行的会话 4.传输层: 定义传输数据的协议端口号,以及流控和差错校验。TCP(网络传输协议,面向连接的,长连接,传输的是数据流,确保数据的安全性和完整性,数据传输的效率慢)UDP(网络传输协议,非面向连接的,短连接,传输的是数据包,传输数据是不安全的,可能造成数据的丢失,数据传输的速度快) 5.网路层: 进行逻辑地址寻址,实现不同网络之间的路径选择。 6.数据链路层: 建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)网桥,交换机 7.物理层: 建立、维护、断开物理连接。

    九、URL介绍

    URI:统一资源标识符 URN:统一资源名称 URL:统一资源定位符 URI是URN和URL的父类

    URL的组成部分: scheme:指的是协议(https/http) host:指的是服务器的ip或者域名 port:指的是端口号 path:资源路径 query_string:url地址后面的查询参数 anchor(锚点):可以指定要跳转的位置

    十、请求方式

    get:只是用于服务器获取数据,在url后面可能会跟一些查询参数 post:向服务器端提交数据,数据会放在请求体中,一般用于添加或修改数据 delete:用来删除数据 put:更新整个资源(用来数据的更新) patch:更新资源(局部数据的更新)

    get和post请求的区别: 1.使用场景:get从服务器端获取数据,post请求向服务器端提交数据2.安全性:get请求参数只拼接在url地址上,post请求会将参数放在请求体中(注意:不要误认为只要url地址后面添加了参数就是一个get请求)3.get请求的url是有长度限制的,post的请求体中可以添加很多字段

    十一、常见的请求头参数

    User-Agent:这个是设置浏览器(设置这个参数模拟浏览器请求对方服务器) Cookie:保存在客户端中,保存的是客户信息 Referer:告诉对方服务器当前请求是从哪个界面跳转过来的(防盗链) Accept:可以接受的数据类型…

    十二、常见的响应头参数

    Cookie和Session:目的是保持回话 http请求是无状态的,每一次请求断开后,下一次请求都是新的请求,为了维持请求状态就用到了Cookie和Session

    Cookie:保存在客户端的,记录信息确定用户的身份 Session:保存在服务端的,记录信息确定用户的身份

    十三、常见的请求状态码

    200:请求成功 3xx:重定向 301:永久重定向 302:临时重定向 4xx:客户端请求错误 400:请求错误,服务器无法解析 401:未授权,没有进行身份验证 403:服务器拒绝访问 404:访问的页面不存在 405:请求方式不允许 408:请求超时 5xx:服务端错误 500:服务端内部错误 501:服务器暂时不具备完成请求的功能 503:服务器不可用

    最新回复(0)