Python 开发轻量级爬虫

(imooc总结03--简单的爬虫架构)

现在来看一下一个简单的爬虫架构。
要实现一个简单的爬虫,有哪些方面需要考虑呢?
首先需要一个爬虫调度端,来启动爬虫、停止爬虫、监视爬虫的运行情况。
在爬虫程序中有三个模块。首先url管理器来对将要爬取的url和已经爬取过的url这两个数据的进行管理。
从url管理器中取出一个待爬取的url将其传送给网页下载器,下载器将指定的网页下载下来存储成一个字符串,这个字符串会传送给网页解析器进行解析,
一方面会解析出有价值的数据,另一方面每一个网页都有很多指向其它网页的url,这些url被解析出来之后,可以补充进url管理器。
url管理器、网页下载器、网页解析器这三个模块就形成了循环。只要有相关的url就会一直运行下去,以上这些模块就组成了这个简单的爬虫架构,
这个架构的运行就可以将互联网上相关联的所有网页都爬取下来。

简单爬虫架构的动态运行流程

是怎样运行起来的,我们来看一下动态运行流程,以时序图的方式进行讲解。
该时序图中包含以下角色,调度器、url管理器、下载器、解析器、应用。
首先调度器询问url管理器有没有待爬取的url, url管理器返回是和否?
如果是的话,调度器会从url管理器中取出一个待爬取的url,url管理器将这个url返回给调度器,得到这个url。
调度器将这个url传送给下载器,对网页的内容进行下载,下载好后,下载器将url内容返回给调度器。
调度器会将url的内容传送给解析器,进行网页的解析,解析之后,会返回价值数据和新的url列表。
一方面调度器会将价值数据传送给应用,进行数据的收集,另一方面,会将新的url列表补充到url管理器,
这个时候,url管理器还有新的待爬取的url,那么这个循环会一直进行下去,直到爬取完所有的没有爬取过的url,
最后调度器会调用应用的方法进行输出,将价值数据输出我们需要的格式。
以上就是简单爬虫架构整体动态运行流程。

Python 开发轻量级爬虫03的更多相关文章

  1. Python 开发轻量级爬虫08

    Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...

  2. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

  3. Python 开发轻量级爬虫06

    Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...

  4. Python 开发轻量级爬虫05

    Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...

  5. Python 开发轻量级爬虫04

    Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...

  6. Python 开发轻量级爬虫02

    Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...

  7. Python 开发轻量级爬虫01

    Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...

  8. Python开发轻量级爬虫

    这两天自学了python写爬虫,总结一下: 开发目的:抓取百度百科python词条页面的1000个网页 设计思路: 1,了解简单的爬虫架构: 2,动态的执行流程: 3,各部分的实现: URL管理器:p ...

  9. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

随机推荐

  1. 弹出框一 之 基于bootstrap和jquery的自定义弹出框

    (function ($) { window.Ewin = function () { var html = '<div id="[Id]" class="moda ...

  2. Typecho中的gravatar头像无法加载

    将var/Typecho/Common.php中的第939行中的http://www.gravatar.com/中的www.给去掉即可! //修改前 $url = $isSecure ? 'https ...

  3. PostgreSQL建立分区表示例

    pgsql 分区表: --主表 create table test(id integer, name varchar(32)); create index idx_test_id on test us ...

  4. Windows Server 2008 R2 IIS7.5下PHP、MySQL快速环境配置【图】

    众所周知,win平台的服务器版本默认是不能运行php的,需要对服务器进行环境配置. 而许多朋友纠结如何配置,在百度上搜索出的教程一大堆,基本步骤复杂,新手配置容易出错. 今天,邹颖峥教大家一种快速配置 ...

  5. Nginx 502 bad gateway问题的解决方法

    Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502 Bad G ...

  6. 总结——R中查看属性的函数

    本文原创,转载注明出处,本人Q1273314690 R中知道一个变量的主要内容和结构,对我们编写代码是很重要的,也可以帮我们避免很多错误. 但是,R中有好几个关于属性查看的函数,我们往往不知道什么时候 ...

  7. CSS 有关margin padding

  8. GridView控件隐藏列

    GridView隐藏列visible="false" 后你就无法取得这列的值了 下面是迄今为止最简洁的解决方法了. protected void GVList_RowDataBou ...

  9. SCP命令

    \ svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称:cp 使用权限: ...

  10. bootstrap-tab

    功能:点击时切换相应的内容或图片 插件:tab.js 要点:tab标签用在导航条上,以data-toggle作被点击者, 以tab-content作内容显示 <!DOCTYPE html> ...