zoukankan      html  css  js  c++  java
  • 爬虫 (一)

    1、爬虫的概念

    ​ 概念:Spider(网络蜘蛛),通过互联网生的一个个的节点,获取其中的数据,然后进行分析存储

    ​ 爬虫的三个过程:数据的获取、数据的分析、数据的存储

    ​ 爬虫的分类

    ​ 通用爬虫:

    ​ 主要用于搜索引擎,百度、谷歌、360、必应等

    ​ 工作原理:

    ​ 数据的获取=>网页的分析=>数据的存储=>对数据进行过滤清洗=>通过一个检索服务给用户提供搜索的窗口(这个就是一个普通的web网站)

    ​ 所有引擎是如何获取数据的:

    ​ 1、通过百度蜘蛛爬取(百度蜘蛛掌握了整个互联网的拓扑),速度较慢

    ​ 2、自身角度:主动的把接口提交给百度(百度的蜘蛛就会比较快的识别到)

    ​ 3、百度的角度:和DNS运营商合作,把一些有价值的网站收录

    ​ 网站的排名规则(SEO):

    ​ 1、通过流量来排名,通过点击量用户量等指标

    ​ 2、在其他网页中设置友情链接

    ​ 3、竞价排名,谁给的钱多,谁排在前面

    ​ robots协议:

    ​ 搜索引擎的蜘蛛在去爬取网页的时候,首先会去读取该网站的robots.txt文件,根据文件的规定去爬取响应的内容(允许的拿走,不允许的别动),如果某个网站没有robots.txt文件,搜索引擎蜘蛛就会把网站中所有的内容爬取

    ​ 【注意】robots协议在做搜索引擎的时候是必须要遵守的,对于我们而言不用管

    聚焦爬虫:

    ​ 根据客户(或者个人)的需求去定制的爬虫

    ​ 工作原理:

    ​ 三个过程

    ​ 1、数据的抓取

    ​ 技术:http协议、url处理等,框架:urllib、requests、scrapy等

    ​ 反爬策略:ip禁止、通过检测访问的频率来禁止ip、设置用户代理、设置验证码等 主要是阻止客户端向服务发送请求

    ​ 2、数据的分析

    ​ 技术:数据类型(html、json、xml、js等),框架:xpath、bs4、selenium+webdriver等

    ​ 反爬:js数据、加密数据

    ​ 3、数据的存储

    ​ 技术:数据的清洗;csv数据、txt、MySQL、redis等

    ​ 爬虫的核心:处理反爬机制许多网站为了保护自己的信息,会做一些反爬。爬虫最终要解决的问题就是如何解决反爬问题(所有的反爬策略最终都是可以解决的,只是时间和金钱代价的问题)

    2、HTTP协议

    ​ 1、什么是HTTP协议?

    ​ 1)基于请求与响应的应用层协议,底层是TCP,传输层可靠;2)通过url来进行客户端与服务器之间的交流 3)是一种C/S(B/S)模式的协议,客户端通过url向服务器发起请求,服务器对请求进行处理然后响应 4)该协议无状态(即不保存客户的会话信息)

    ​ 2、http协议过程:

    ​ 1)创建TCP链接:客户端与服务器进行三次握手: 客户端向服务器发起一个请求是否创建链接信号、服务器回应给客户端是否建立链接、客户端向服务器发出创建链接的信号进而建立链接;三次握手以后,客户端和服务器就建立了一个数据的通路,就可以把一些应用层的数据包进行传递

    ​ 2)客户端向服务器发出请求:通过url把数据参数传递给服务器,请求的方式有4种,常见的是get和post

    ​ 请求头:请求头中包含整个请求的配置信息(决定了这次请求的的性质)

    ​ 请求体:就是参数

    ​ get请求和post请求

    ​ 形式上:get的请求体(参数)是拼接在url后面的,post的的请求体在url中不体现

    ​ 内容上:get默认限制一定的大小(不同的浏览器对url最大长度的要求不一样),post请求默认是不限制长度的(有时候web服务器会对其(上传)作限制,比如阿帕奇限制20M)

    ​ 3)服务端处理客户端的请求,然后把处理结果响应给客户端(通过url)

    ​ 4)关闭连接:TCP的四次挥手

    ​ 面试题:

    ​ 1、请您解释一下什么是http协议?

    ​ 2、请谈一下get和post的区别

    ​ 3、http协议和https协议有什么区别?

    ​ 4、http协议的常见状态码,及其含义?

    ​ 5、如何取配置https协议?

    3、环境

    ​ windows或linux,python3.6 , pycharm(sublime), 后期(scrapy和redis数据库)Ubuntu系统

    4、fiddler

    ​ 抓包工具

  • 相关阅读:
    Lambda表达式、依赖倒置
    ASP.NET vNext 概述
    Uname
    RHEL4 i386下安装rdesktop【原创】
    Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
    How to decompile class file in Java and Eclipse
    先有的资源,能看的速度看,不能看的,抽时间看。说不定那天就真的打不开了(转)
    Google App Engine 学习和实践
    【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
    js正則表達式语法
  • 原文地址:https://www.cnblogs.com/gugubeng/p/9723874.html
Copyright © 2011-2022 走看看