首页 > 其他 > 详细

一、爬虫简介

时间:2021-02-23 13:34:34      阅读:36      评论:0      收藏:0      [点我收藏+]

一、爬虫简介

1. 爬虫的概念及价值

概念:通过编写程序,模拟浏览器上网,然后让程序自动去互联网上爬取数据的过程。

价值:提高数据提取效率,具有实际应用的价值。

2. 合法性

爬虫技术是一种计算机技术,具有中立性,爬虫本身在法律上不被禁止,但是在获取数据的行为具有违法的风险。

根据合法性分类:

  • 善意爬虫
  • 恶意爬虫:干扰被访问网站的正常运营,或爬取了受法律保护的信息。

实际运用中需要注意事项:

  • 持续优化程序,避免干扰被访问网站的正常运行;
  • 审查爬取的数据内容是否合法(个人信息、商业机密等)。

3. 爬虫的使用场景分类

1、通用爬虫:抓取系统重要组成部分,爬取的是一整张页面数据。

2、聚焦爬虫:建立在通用爬虫基础之上,抓取页面中特定的数据。

3、增量式爬虫:可以用来检测网站数据更新的情况,并且可以将网站更新的数据进行爬取。

4. 反爬机制和反反爬策略

反爬机制:门户网站通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。

反反爬机制:爬虫程序通过制定相关策略或者技术手段,用来破解门户网站中的反爬机制,从而获取数据。

5. robots.txt协议

搜索引擎从业者和网站站长通过邮件讨论定下了一项“君子协议”—— robots.txt。即网站有权规定网站中哪些内容可以被爬虫抓取,哪些内容不可以被爬虫抓取。这样既可以保护隐私和敏感信息,又可以被搜索引擎收录、增加流量。

6. HTTP基础

6.1 URI和URL

用于指定资源的访问方式:访问协议(HTTP/HTTPS) + 访问路径(/即根目录)+资源名称

URI:Uniform Resource Identifier,统一资源标志符;

URL:Uniform Resource Locator,统一资源定位符;

URN:Uniform Resource Name,统一资源名称。

技术分享图片

6.2 http 和 https协议

服务器和客户端进行数据交互的形式(访问资源需要的协议类型)。

http协议:(Hyper Text Transfer Protocol)万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

技术分享图片

https协议:(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。

技术分享图片

https加密算法:

  • 对称秘钥加密:客户端向服务器发送一条信息,首先客户端会采用已知的算法对信息进行加密,比如MD5或者Base64加密,接收端对加密的信息进行解密的时候需要用到密钥,中间会传递密钥,(加密和解密的密钥是同一个),密钥在传输中间是被加密的。这种方式看起来安全,但是仍有潜在的危险,一旦被窃听,或者信息被挟持,就有可能破解密钥,而破解其中的信息。因此“共享密钥加密”这种方式存在安全隐患。

    技术分享图片

  • 非对称秘钥加密:使用两把锁,一把叫做“私有密钥”,一把是“公开密钥”。服务器首先告诉客户端按照自己给定的公开密钥进行加密处理,客户端按照公开密钥加密后传输加密的数据给服务器,服务器在接受到信息后通过自己的私有密钥进行解密。解密的钥匙不会进行传输,因此也就避免了被挟持的风险。就算公开密钥被窃听者拿到了,它也很难进行解密,因为解密过程是对离散对数求值。

    非对称秘钥加密技术的缺点:

    第一是:公开秘钥传输还是有可能被挟持,客户端无法确保收到的公开密钥是没有被篡改过的。

    第二是:非对称加密的方式效率比较低,处理起来更为复杂,会影响通信速度。

技术分享图片

  • 证书秘钥加密:为避免公钥可能存在被挟持的情况,保证客户端收到的公开密钥就是服务器发行的,就此引出了公开密钥证书机制,在客户端和服务器之间建立一个可信赖的第三方机构担任数字证书认证机构

    证书的具体传播过程如下:

    服务器的开发者携带公开密钥,向数字证书认证机构提出公开密钥的申请;

    数字证书认证机构去辨认申请者的身份,在审核通过以后,会对开发者申请的公开密钥进行数字签名,然后分配这个已签名的公开密钥,并将密钥放在证书里面,将这份数字证书发送给客户端;

    客户端也认可证书机构,可以通过数字证书中的数字签名来验证公钥的真伪,来确保服务器传过来的公开密钥是真实的,一旦确认信息无误之后,客户端就会通过公钥对报文进行加密发送,服务器接收到以后就可以用自己的私钥进行解密。

    一般情况下,证书的数字签名是很难被伪造的,但这也取决于认证机构的公信力。

    技术分享图片

6.3 请求信息

由客户端向服务端发出。

  • 请求方法(Request Method)

    常用的请求:GET 和 POST;

    区别:GET请求的参数包含在URL里面, POST请求的参数不包含在URL里面,数据都是通过表单形式传输的,包含在请求体内;GET请求提交的数据最多只有1024字节,而POST方式没有限制。

    其他请求方法:

    技术分享图片

  • 请求网址(Request URL):即统一资源定位码(URL);

  • 请求头(Request Headers):包含Accept\Accept-Language\Accept-Encoding\Host\Cookie\Referer\User-Agent\Content-Type等信息;

  • 请求体(Request Body):POST请求中的表单数据,对于GET请求,请求体则为空。

6.4 响应信息(状态码)

由服务端返回给客户端。

  • 响应状态码(Response Status Code)

    常见状态码:200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。
    技术分享图片

技术分享图片

技术分享图片

  • 响应头(Response Headers)

    包含服务器对请求的应答信息,如Date\Last-Modified\Content-Encoding\Content-Type\Set-Cookie\Expires等。

  • 响应体(Response Body):HTML代码,响应的正文数据。

7. 网页基础

7.1 网页组成

网页主要三大部分:HTML、CSS和JavaScript。

HTML定义网页的内容和结构;CSS描述了网页的布局;JavaScript定义了网页的行为。

  • HTML(Hyper Text Markup Language,超文本标记语言)--骨架

    HTML用来描述网页的一种语言,网页的基础骨架,不同的元素通过不同类型的标签表示,并通过布局标签嵌套组合而成。

  • CSS(Cascading Styple Sheets,层叠样式表)--皮肤

    通过CSS实现网页页面的排版,使页面更加美观。

  • JavaScript--肌肉

    一种脚本语言,可使网页实现实时、动态、交互的页面功能。

7.2 节点树和节点

DOM(Document Object Model,文档对象模型) :中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

W3C DOM标准:

  • 核心DOM:针对任何结构化文档的标准模型。
  • XML DOM:针对XML文档的标准模型。
  • HTML DOM:针对HTML文档的标准模型。

HTML DOM:将HTML文档视作树结构,称为节点树。树中的节点可通过JavaScript访问,节点元素均可被修改、创建、删除,彼此之间具有层次关系(父节点、子节点、兄弟节点)。

技术分享图片
技术分享图片

7.3 选择器(CSS)

CSS选择器会根据不同的节点设置不同的样式规则,也可以用来定位节点。

CSS语法规则:

技术分享图片

技术分享图片

技术分享图片

8. 爬虫的基本原理

主要流程:获取网页-->提取信息-->保存数据。(利用程序自动化)

  • 获取网页:获取网页源代码,利用程序获取。(Python库:urllib,requests等)最常抓取的是HTML源代码,包含各种二进制数据(图片、音频、视频等);JavaScript渲染页面,采用Ajax、前端模块化工具构建,整个页面是JavaScript渲染出来的,原始HTML代码是空壳,此时使用Selenium\Splash这样的库来模拟JavaScript渲染。
  • 提取信息:分析网页源代码(CSS选择器、Xpath选择器、Beautiful Soup、pyquery、lxml、正则表达式等);
  • 保存数据:本地--TXT文本或JSON文本等,数据库--MySQL\MongoDB等,远程服务器等。

9. 会话(Session)和Cookies

由于HTTP协议对事务处理没有记忆能力,服务器不知道客户端是什么状态。

为保持HTTP连接状态,需要会话和Cookies配合。

  • 会话(Session):在服务端,用来保存用户的会话信息;
  • Cookies:在客户端,保存了登录的凭证,浏览器在再次访问网页时自动附带上它发送给服务端,服务器通过识别Cookies并鉴定出用户,再判断用户是否是登录状态,然后返回对应的响应;
  • 会话维持:需要Cookies和会话配合,当客户端第一次请求服务器时,服务器会返回一个请求头中带有Set-Cookie字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把Cookies保存起来;当浏览器再次请求网页时,浏览器会把此Cookies放到请求头一起提交给服务器,Cookies携带了会话信息,服务器就能通过Cookies找到对应的会话,以及通过会话辨认客户。

一、爬虫简介

原文:https://www.cnblogs.com/xiqi2018/p/13953110.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!