zoukankan      html  css  js  c++  java
  • 【python爬虫】初识爬虫

    一、爬虫的定义

      爬虫定义:程序或者脚本——自动的爬取万维网的数据的程序或者脚本。

    二、爬虫可以解决的问题

      1、解决冷启动问题。
      2、搜索引擎的根基——通用爬虫。
      3、帮助机器学习建立知识图谱。
      4、制作各种比价软件。

    三、爬虫工程师的进阶之路

      1、初级爬虫工程师

        (1)web 前端的知识: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等;
        (2)正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则;
        (3)会使用 XPath 等获取一些DOM 结构中的节点信息;
        (4)知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则;
        (5)能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。

      2、中级爬虫工程师

        (1)了解什么事HASH,会简单地使用MD5,SHA1等算法对数据进行HASH一遍存储
        (2)熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等
        (3)能设置user-agent进行数据爬取,设置代理等
        (4)知道什么事Request,什么事response,会使用Fiddler等工具抓取及分析简单地网络数据包;对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录。
        (5)对于一些难搞定的网站学会使用phantomjs+selenium抓取一些动态网页信息
        (6)并发下载,通过并行下载加速数据爬取;多线程的使用。

      3、高级爬虫工程师

        (1)能够使用Tesseract,百度AI,HOG+SVM,CNN等库进行验证码识别。
        (2)能使用数据挖掘技术,分类算法等避免死链。
        (3)会使用常用的数据库进行数据存储,查询。比如mongoDB,redis;学习如何通过缓存避免重复下载的问题。
        (4)能够使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封禁等。
        (5)能使用一些开源框架scrapy,scrapy-redis等分布式爬虫,能部署掌控分布式爬虫进行大规模数据爬取。

    四、搜索引擎

      1、什么是搜索引擎

        搜索引擎通过特定算法,从互联网上获取网页信息,将其保存到本地,为用户提供检索服务的一种程序。

      2、搜索引擎的组成:搜索引擎主要是是由通用爬虫组成的。

        (1)通用爬虫:将互联网上的网页信息【整体】爬取下来的爬虫程序。

        (2)搜索引擎的工作步骤:

           ①抓取网页
           ②数据存储
           ③预处理
            提取文字
            中文分词
            消除噪音
            ......
           ④设置网站排名(访问量),为用户提供检索服务。

        (3)为什么搜索引擎可以爬取所有的网页?---搜索引擎的通用是如何来爬取所有网页的。

            一个网页就是一个url,这个问题其实在问,【url的获取来源】。
            url的获取来源:

              ①新网站会主动提交网址给搜索引擎。
              ②网页中的一些外链,这些url全部都会加入到通用爬虫的爬取队列。
              ③搜索引擎和dns解析服务商合作,如果有新网站注册,搜索引擎就可拿到网址。

      3、通用爬虫的缺陷

        (1)通用爬虫是爬取整个网页,但是网页中90%的内容基本是没用。
        (2)不能满足不同行业,不同人员的不同需求。
        (3)只能获取文字,不能获取音频,视频,文档等信息。
        (4)只能通过关键字查询,无法通过语义查询。

      4、聚焦爬虫

          在实施网页抓取的过程中,【会对内容进行筛选】,尽量保证只抓取与【需求相关】的信息的爬虫程序。

    五、robots协议

      定义:网络爬虫排除标准
      作用:告诉搜索引擎那些可以爬那些不能爬。

    六、http协议

      1、什么是http协议

        是一种规范——————>约束发布和接受html的规范。

      2、http和https

        http:超文本传输协议。
        https : 安全版的http协议。---ssl---
        对称加密---密钥
        非对称---私钥+公钥
        数字签证---

      3、端口号

        https:443

        http:80
        Upgrade-Insecure-Requests: 1:可以将http升级成https请求。

      4、http的特点

        (1)应用层协议。
        (2)无连接:http每次发送请求和响应的过程都是独立。
          在http 1.0以后,有请求头:connection:keep-alive:客户端和服务建立长连接。
        (3)无状态:http协议不记录状态。
              cookie和session做到请求状态的记录。
              cookie是在客户端保存,session是在服务器保存。

      5、url:统一资源定位符

        (1)主要作用:用来定位互联网上的任意资源的位置。

        (2)为什么url可以定位任意资源?

            ①组成:https://www.baidu.com/index.html?username=123&password=abc#top
            ②scheme:协议---https
            ③netloc : 网络地址:ip:port---www.baidu.com
                      通过ip定位电脑,通过port定位应用。
                     192.168.92.10:
            ④代理ip:ip:port
            ⑤path:资源路径。---index.html
            ⑥query:请求参数:---?后面的内容username=123&password=abc
            ⑦fragment:锚点----top

            原因:url包含netloc可以定位电脑,path定位资源,这样就可以找到任意在互联网上的信息。

        (3)特殊符号:

            ?:后面就是请求参数
             & : 连接请求参数
             # : 锚点----如果url中有锚点,在爬虫程序中尽量去除。

      6、 http的工作过程

        (1)地址解析:
          将url的所有组成部分分别解析出来。
        (2)封装http请求数据包。
          将第一步解析出来的信息进行装包。---http数据包。
        (3)封装tcp数据包,通过三次握手建立tcp。
        (4)客户端发送请求
        (5)服务发送响应
        (6)关闭tcp连接。

      7、当我们在浏览器输入一个url,浏览器加载出这个页面,中间做了哪些事?

        (1)客户端解析url,封装数据包,建立连接,发送请求。
        (2)服务器返回url对应资源文件给客户端,比如:index.html。
        (3)客户端检查index.html是否有静态资源(引用外部文件),比如js,css,图片。有的话再分别发送请求,来获取这些静态资源。
        (4)客户端获取所有静态,通过html语法,完全将index.html页面显示出来。 

      8、 http的请求方法:

        get请求:get(获取)-->获取服务器的指定资源--->涉及到筛选一些信息--->请求参数:主要拼接在url中。--->不安全(别人可以通过url获取信息)--->请求参数的大小受限。
        post请求:post(邮递)--->向服务器传递数据--->请求数据是方法在请求实体中的--->安全--->大小不受限。

      9、客户端请求

        (1)组成:请求行、请求头、空行、请求数据(实体)

            请求头:请求方法;host地址,http协议版本。

        (2)请求头:

            ①user-agent:客户端标识。
            ②accept:允许传入的文件类型。
            ③Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
            ④Referer:标识产生请求的网页来自于哪个网页。
                  防盗链
            ⑥cookie:cookie信息。---现在很多网站,必须封装cookie才给数据。
            ⑦post请求重要的请求头:
              content-type:post请求的数据类型
              content-length:post请求数据的长度。
            ⑧ajax请求必须封装的头:
              x-requested-with:xmlhttprequest

      10、服务器响应:

        (1)组成:状态行、响应头、空行、响应正文。

        (2)响应头

            Content-Type:text/html;charset=UTF-8

        (3)状态码(面试常考)

            ①1XX:表示服务器成功接收部分请求,还需要发剩余请求才能处理整个过程。(处理了一半)
            ②2XX:标识服务器成功接收请求并处理完整个过程。(成功)
               200成功
            ③3XX:为了完成请求,客户端需要进一步细化请求。
               302:重定向
               304:使用缓存资源
            ④4XX:客户端请求错误。(url写错了)
               404:服务器无法找到请求内容。
                  403:服务器拒绝访问,权限不够。
            ⑤5XX:服务器错误。
                  502:服务器错误
                       500:请求未完成,服务器遇到不可知问题

  • 相关阅读:
    性能测试四十五:性能测试策略
    性能测试四十四:性能优化思路
    性能测试四十三:数据库监控的指标
    性能测试四十二:sql案例之联合索引最左前缀
    性能测试四十一:sql案例之慢sql配置、执行计划和索引
    性能测试四十:Mysql存储过程造数据
    性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题
    delphiIDE 把 window 桌面改慢后的 还原方法
    TStringList 善用 value['names'] 即使value 是带=号的值都没有关系呵呵 ,我靠 强,以后就用这个了,key=value首选
    TStringList,快速解析 查找测试。。。很有用,再也不用 FOR 循环了
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12063686.html
Copyright © 2011-2022 走看看