python爬虫

一、 爬虫的定义

  1. 爬虫就是自动的爬取万维网数据的程序或者脚本。

二、 爬虫可以解决的问题

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

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

  • 初级爬虫工程师

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

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

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

四、 搜索引擎

  1. 什么是搜索引擎:搜索引擎通过特定算法,从互联网上获取网页的信息,将其保存到本地,为用户提供体验服务的一种程序。
  2. 搜索引擎的组成:搜索引擎主要是有通用爬虫组成的。
    a) 通用爬虫:将互联网上的信息[整体]爬取下来的爬虫程序。
    b) 搜索引擎的工作步骤:抓取网页–>数据存储–>预处理(提取文字,中文分词,消除噪音…)
  3. 通用爬虫的缺陷
    a) 通用爬虫不能爬取整个网页,但是网页中90%的内容基本没用。
    b) 不能满足不同的行业,不同人员的不同需求。
    c) 只能获取文字,不能获取音频,视频,文档等信息。
    d) 只能通过关键字查询,无法通过予以查询。
  4. 聚焦爬虫
    在实施网页爬取的过程中,会对内容进行筛选,尽量保证只爬取与需求相关的信息的爬虫程序。

五、 robots协议

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

六、 http协议

  1. 什么是HTTP协议:是一种规范----约束发布和接受HTML的规范。

  2. http和https
    a) http:超文本传输协议,端口号80。
    b) https:安全版的http协议。(在http下加入SSL层)
    c) SSL:安全套接层。主要用于web的安全传输协议,在传输层对网络连接进行加密保障在Internet上数据传输的安全。
    Upgrade-Insecure-Requests: 1:可以将http升级成https请求。

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

  4. url:统一资源定位符
    a) 主要作用:用来定位互联网上的任意资源的位置。
    b) 为什么url可以定位任意资源?
    原因:url包含netloc可以定位电脑,path定位资源,这样就可以找到任意在互联网上的信息。

    组成: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

    c) 特殊符号:

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

  5. http的工作过程
    a) 地址解析:将url的所有组成部分分别解析出来。
    b) 封装http请求数据包:将第一步解析出来的信息进行装包。—http数据包。
    c) 封装TCP数据包,通过三次握手建立TCP。
    d) 客户端发送请求。
    e) 服务发送响应。
    f) 关闭TCP链接。

  6. 当我们在浏览器输入一个url,浏览器加载出这个页面,中间做了那些事?
    a) 客户端解析url,封装数据包,建立连接,发送请求。
    b) 服务器返回url对应资源文件给客户端,比如:index.html。
    c) 客户端检查index.html是否有静态资源(引用外部文件),比如js,css,图片。有的话再分别发送请求,来获取这些静态资源。
    d) 客户端获取所有静态,通过HTML语法,完全将index.html页面显示出来。

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

  8. 客户端请求
    a) 组成:请求行、请求头、空行、请求数据(实体)
    请求头:请求方法;host地址,http协议版本。
    b) 请求头:

    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

  9. 服务器响应
    a) 组成:状态行、响应头、空行、响应正文。
    b) 响应头:Content-Type:text/html;charset=UTF-8
    c) 状态码(面试常考):

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

你可能感兴趣的:(python爬虫)