Torres-tao  

爬虫分类

爬虫可分为三类:通用网络爬虫、聚焦网络爬虫和增量式网络爬虫

通用网络爬虫

通用网络爬虫是搜索引擎的重要组成部分,通用网络爬虫需要遵守robots协议,网站通过此协议告诉搜索引擎那些页面可以抓取,哪些页面不允许抓取。

robots协议:是一种“约定俗成”的协议,并不具备法律效力,它体现了互联网人的“契约精神”。行业从业者会自觉遵守该协议,因此它又被称为“君子协议”。

聚焦网络爬虫

是面向特定需求的一种网络爬虫程序。它与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。聚焦网络爬虫极大地节省了硬件和网络资源,由于保存的页面数量少所以更新速度很快,这也很好的满足一些特定人群对特定领域信息的需求。

增量式网络爬虫

是指对已下载网页采取增量式更新,它是一种只爬取新产生的或者已经发生变化网页的爬虫程序,能够在一定程度上保证所爬取的页面是最新的页面。

编写爬虫的流程

爬虫程序与其他程序不同,它的思维逻辑一般都是相似的,所以无需我们在逻辑方面花费大量的时间。下面对python编写爬虫程序的流程做简单地说明:

  • 先有urllib模块的request方法打开url,得到网页HTML对象
  • 使用浏览器打开网页源代码分析网页结构以及元素节点
  • 通过Beautiful Soup或正则表达式提取数据
  • 存储数据到本地磁盘或数据库

网页构成

网页一般由三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)和JavaScript(简称“JS”,动态脚本语言),它们三者在网页中分别承担着不同的任务。

  • HTML负责定义网页的内容
  • CSS负责描述网页的布局
  • JavaScript负责网页的行为

HTML

HTML是网页的基本结构,它相当于人体的骨骼结构。网页中同时带有“<”,“>”符号的都属于HTML标签。常见的HTML标签如下:

标签 描述
声明为HTML5文档
.. 网页的根元素
.. 包含了文档的元数据,如定义网页编码格式为utf-8
.. 描述文档的标题
.. 定义文档的主体
..
定义文档中的节

..

定义文档中的段落
    ..
定义无序列表
    ..
>
定义有序列表
  • ..
  • 定义列表的项目
    定义图像

    ..

    定义标题
    <a href="">.. 定义超文本链接
    定义注释

    编写如下代码:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>Torres</title>
    </head>
    
    <body>
        <a href="www.baidu.com">点击访问</a>
        <h1>托雷斯www.torres.com</h1>
        <h2>Python爬虫</h2>
        <div>
            <p>认识网页结构</p>
            <ul>
                <li>HTML</li>
                <li>CSS</li>
                <li>JS</li>
            </ul>
        </div>
    </body>
    
    </html>
    

    运行结果如下:

    CSS

    css表示层叠样式表,其编写方法有三种,分别是行内样式、内嵌样式和外联样式。CSS代码演示如下:

    <!DOCTYPE html>
    <html>
    
    <head>
        <!--内嵌样式-->>
        <style type="text/css">
            body {
                background-color: yellow;
            }
    
            p {
                font-size: 30px;
                color: springgreen;
            }
        </style>
        <meta charset="utf-8">
        <title>Torres</title>
    </head>
    
    <body>
        <!--h1标签使用了行内样式-->
        <h1 style="color: blue;">托雷斯www.torres.com</h1>
        <a href="www.baidu.com">点击访问</a>
        <h2>Python爬虫</h2>
        <div>
            <p>认识网页结构</p>
            <ul>
                <li>HTML</li>
                <li>CSS</li>
                <li>JS</li>
            </ul>
        </div>
    </body>
    
    </html>
    

    运行结果如下:

    PS:

    • 内嵌样式通过style标签书写样式表
    • 行内样式则通过HTML元素的style属性来书写CSS代码。(注:每一个HTML元素,都有style、class、id、name、title属性
    • 外联样式表则指的是CSS代码单独保存为以.css结尾的文件,并使用引入到所需页面。当样式需要被应用到多个页面的时候,使用外联样式表是最佳的选择。
    <head>
        <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>
    

    JavaScript

    js负责描述网页的行为,比如,交互的内容和各种特效都可以使用js来实现。当然也可以通过其他方式实现,比如jQuery、还有一些前端框架(Vue、React等),不过它们都是在js的基础上实现的。

    简单示例:

    <!DOCTYPE html>
    <html>
    
    <head>
        <style type="text/css">
            body {
                background-color: rgb(220, 226, 226);
            }
        </style>
        <meta charset="utf-8">
        <title>Torres</title>
    </head>
    
    <body>
        <h1 style="color:blue">托雷斯www.torres.com</h1>
        <h2>python爬虫</h2>
        <p>点击下方按钮获取当前时间</p>
        <button onclick="DisplayDate()">点击这里</button>
        <p id="time" style="color: red;"></p>
        <!--script标签内部编写js代码-->
        <script>
            function DisplayDate() {
                document.getElementById("time").innerHTML = Date()
            }
        </script>
    </body>
    
    </html>
    

    运行结果如下:

    总结

    如果用人体来比喻网站结构的话,那么HTML是人体的骨架,它定义了人的嘴巴、眼睛、耳朵长在什么位置;CSS描述了人体的外观细节,比如嘴巴长什么样子,眼睛是双眼皮还是单眼皮,皮肤是黑色还是白色等;而js则表示人拥有的技能,比如唱歌、打球、游泳等。

    posted on 2022-03-29 10:31  雷子锅  阅读(120)  评论(0编辑  收藏  举报