美文网首页
爬虫入门

爬虫入门

作者: YU不忘初心 | 来源:发表于2018-11-16 00:22 被阅读0次

    1、什么是爬虫?
    就是一段自动获取互联网数据的程序
    2.、爬虫有什么用途?
    搜索引擎
    比价工具(慧慧购物助手)
    大的咨询网站(jobbole,今日头条、、、)

     网站的三大特性:
        1、 每一个资源都有一个url(统一资源定位符),是唯一的
        2、网页都是HTML(超文本)文本展示数据的
        3、 通过HTTP/HTTPS(超文本传输协议),获取和传递HTML
    

    3、如何实现一个爬虫?
    1. 找到目标url
    2. 根据url 发起请求
    3. 解析相应结果:
    a. 提取目标数据
    b. 如何存在新的url. 将进一步提取(会执行1-3 这个循环)
    4. 爬虫结束:所有符合条件的url 请求全部 获取完毕。意味着爬虫结束

    4、为什么要使用python 做爬虫?
    PHP, java , c/c++ , python .....
    PHP:可以用来做爬虫,但是对多任务的支持不是太好,爬虫是对象要求比较高的,
    所以说PHP 天生不是干这个事情的。
    JAVA: 生态圈很完善。 并且用途非常广泛(后端,移动端、、)java做爬虫是python 最大的竞争对手,
    但是java 代码量比较大,重构的成本比较高
    c/c++: 肯定是可以完成爬虫这件事的,并运行的效率是非常高的 , 但是学习的门槛非常高,
    各个模块可能需要你自己封装和定制,(能使用C/C++的人 一般比较牛!)
    python:语法简介, 代码优美,可读性高,并且对各个模块的支持比较好, 有很多强大的三方包 对多任务的处理也比较好,
    urllib,request,的都能够很好的帮助我们是想一个爬虫项目 解析的库也非常多(lxml,bs4,pyquery...)
    并且还有强大的scrapy 爬虫框架和scrapy_redis分布式爬虫框架,
    并且python 作为一门胶水语言,对于其他语言的调度也是非常方便的,

    爬虫分为两类:
    通用爬虫:通用爬虫是浏览器的重要组成部分,将互联网上所有的网页下载到本地,
    做了一个镜像备份,提取重要数据(过滤数据,分词,去广告等等...)

    步骤其实跟上面介绍的类似

    搜索引擎的爬取的url通过什么方式获取的??

    1. 通过网站的外链
    2. 通过网页提交url: (百度http://zhanzhang.baidu.com/linksubmit/url
    3. 各大搜索引擎公司也会和DNS 服务商合作
      DNS : 将我们的域名转化为ip 的一种技术

    通用爬虫(搜索引擎)的缺点:

    1. 需要遵循robots协议:(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,
    2. 搜索引擎返回的结果千篇一律 没有很好的针对性,不能够得数的用户群体返回对应的数据,
    3. 搜索引擎一般情况下获取的是文本信息 ,处理图像,音频,视频多媒体还是有困难的,

    聚焦爬虫:是面向主题的爬虫,由需求产生的 是一种定向爬虫,在爬取网页数据的时候,
    会对网页数据进行一些赛选,保证只抓取和需求相关的数据,以后我们更多的就是实现聚焦爬虫。

    做爬虫需要掌握哪些基本知识??

    1. python 的基本语法
    2. 前端知识 HTML
    3. 数据持久化的知识
    4. 了解基本的反爬虫 手段(header请求头,验证码,cookies,代理)
    5. 静态页面和动态页面(ajax,js)selenium (获取的页面源码是经过浏览器渲染之后的最终结果)
    6. 多任务处理,爬虫框架,分布式爬虫等等

    HTTP: 超文本传输协议,主要是用来将html文本传输到本地浏览器

    HTTPS:作用和HTTP一致,只是多了SSL (安全套接字层)保证数据传输的安全性
    1. 建立一个安全有效的数据传输通道,保证数据的安全性
    2. 保证网站的真实性和有效性

    url的组成部分:

    1. scheme:协议
      2、host:指的是域名或者IP
    2. port:端口
      4.path: 资源路径
    3. query-string:请求的参数
      6.anchor: 锚点 只要实现页面的定位作用

    请求头:
    User-Agent: 模拟浏览器加载
    Cookies: 携带cookies第一可以维持会话,可以告诉浏览器用户的身份信息
    Refere: 告诉浏览器 当前请求 是从哪个页面发起的。

    常见的状态码:

    2xx:表示服务器成功接收请求并已完成整个处理过程。
    200(OK 请求成功)。
    3xx:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用
    301: 永久重定向
    302:临时重定向(所请求的页面已经临时转移至新的url)
    4xx:客户端的请求有错误.
    400:错误请求,服务器无法解析请求
    401:未授权,没有进行身份验证
    403:服务器拒绝访问
    404:服务器无法找到被请求的网页
    408:请求超时
    5xx:服务器端出现错误
    500:服务器内部错误
    501:服务器不具备完成请求的功能
    503:服务器不可用

    urllib库的基本使用

    request: 它是最基本的HTTP请求模块,可以用来模拟发送请求,就像在浏览器中输入网址,
    然后敲击回车键一样,使用的时候只需要给库方法传入相关的URL和相关的参数即可.
    error: 异常处理模块,如果出现请求错误,我们可以使用这个模块来捕获异常,
    然后进行重试或者其他操作,保证程序不会意外终止.
    parse: 这是一个工具模块,提供了许多url的处理方法,比如拆分,解析,合并等等.

    使用urlencode方法可以将字典类型的参数 转换为url编码的字符串
    特别注意:如果发去的get 请求参数中包含中文 一定要使用urlencode进行编码
    unquote :将编码的参数 转换为正常的中文

    User-Agent : 设置默认浏览器

    url:设置目标url
    data=None : 默认为None 表示是一个get 请求 如果部位None 表示是一个Post请求
    timeout:用于设置超时时间,单位为秒
    cafile =None 可以指定证书文件 (一般情况下用不到这个参数)
    capath = None : 指明证书路径
    cadefault = False: 是否要使用默认的证书
    context = None : 赋值则表示忽略未认证的ssl 证书

    相关文章

      网友评论

          本文标题:爬虫入门

          本文链接:https://www.haomeiwen.com/subject/sexpfqtx.html