1.注册中国大学MOOC

2.选择北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程

3.学习完成第0周至第4周的课程内容,并完成各周作业

4.提供图片或网站显示的学习进度,证明学习的过程。

5.写一篇不少于1000字的学习笔记,谈一下学习的体会和收获。

学习心得

    网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。通过课堂学习Python的高级应用和在慕课上学习的爬虫知识与信息提取,我学习到了很多有趣的相关知识,总结如下。

一、爬虫结构

      无论是简单的爬虫还是大型的爬虫无外乎核心的部分就是五部分,URL管理器、页面下载器、页面解析器、爬虫调度器和存储器。
        URL管理器:记录已爬取的链接和未爬取的链接以及链接的去重
        页面下载器:负责下载爬虫请求的页面
        页面解析器:解析并提取爬虫所需的数据
        调度器:负责协调爬虫的运行
        存储器:负责持久化爬取的数据

  

二、爬虫优点

 全栈开发、网络爬虫、数据挖掘、人工智能、Web 开发、系统网络运维、数据分析和计算、图形程序开发等方向不一而足。

从大公司角度而言:

国内基于Python创业成功的案例不在少数,豆瓣、知乎、果壳,全栈都是 Python,大家对Python自然有信心。并且从这几家公司出来的程序员与 CTO,创业的话一般都会选择Python,雪球定会越滚越大。

从小公司角度而言:

现在创业公司越来越多,用Python出项目快,开发成本小,雇佣的员工数量也可以保持在可控范围。

从开发者个人角度而言:
计算机语言只是用来达成目(偷懒)的工具,我们只是希望通过简单的输入,让程序替代我们执行一些枯燥繁琐的工作。至于句式是否优美、效率相差几何、能否反映出使用者的智力逼格,我们并不关心。下面才是我关注的:

  • 提高个人编码效率起码3倍;
  • 各种强大的第三方库,拿来就能用;
  • 语句简洁,小白都能理解。
    同样是显示Hello World,Python更近似于自然语言(英语)的表述

现在,用Python的『inside battery』,就可以做到以前需要反复造轮子还做得不是那么好的东西。Python这门语言,大大解放了程序员的时间,让程序员们“寂寞难耐”的夜晚有了更多的产出。

即便这样,Python还有会心一击:它可以十分方便地和C融合到一起。这种组合彻底解决了后顾之忧:先用Python快速开发搭建产品原型,再找出性能瓶颈有针对性优化。正所谓好钢用在刀刃上,Python不仅节约时间,节省成本,减少风险,而且某种程度上还提高了程序员的生活品质。

三、关键技术

    网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

       1、获取初始URL。初始URL地址可以有用户人为指定,也可以由用户指定的某个或某几个初始爬取网页决定。

  2、根据初始的URL爬取页面并获得新的URL。获得初始的URL地址之后,首先需要爬取对应URL地址中的网页,爬取了对应的URL地址中的网页后,将网页存储到原始数据库中,并且在爬取网页的同时,发现新的URL地址,同时将已爬取的URL地址存放到一个URL列表中,用于去重及判断爬取的进程。

  3、将新的URL放到URL队列中,在第二步中,获取下一个新的URL地址之后,会将新的URL地址放到URL队列中。

  4、从URL队列中读取新的URL,并依据新的URL爬取网页,同时从新的网页中获取新的URL并重复上述的爬取过程。

  5、满足爬虫系统设置的停止条件时,停止爬取。在编写爬虫的时候,一般会设置相应的停止条件。如果没有设置停止条件,爬虫会一直爬取下去,一直到无法获取新的URL地址为止,若设置了停止条件,爬虫则会在停止条件满足时停止爬取。


三、面临问题
相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
(1) 对抓取目标的描述或定义;
(2) 对网页或数据的分析与过滤;
(3) 对URL的搜索策略。