Python 开发轻量级爬虫03
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的更多相关文章
- Python 开发轻量级爬虫08
Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...
- Python 开发轻量级爬虫07
Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...
- Python 开发轻量级爬虫06
Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...
- Python 开发轻量级爬虫05
Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...
- Python 开发轻量级爬虫04
Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...
- Python 开发轻量级爬虫02
Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...
- Python 开发轻量级爬虫01
Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...
- Python开发轻量级爬虫
这两天自学了python写爬虫,总结一下: 开发目的:抓取百度百科python词条页面的1000个网页 设计思路: 1,了解简单的爬虫架构: 2,动态的执行流程: 3,各部分的实现: URL管理器:p ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
随机推荐
- 成功的背后!(给所有IT人)
转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过 ...
- 前端入门级之如何从零开始前端(估计要被人鄙视成LOW货了)入门篇
<!------------------------------------------------------基本说明开始----------------------------------- ...
- 【AngularJS】—— 4 表达式
前面了解了AngularJS的基本用法,这里就跟着PDF一起学习下表达式的相关内容. 在AngularJS中的表达式,与js中并不完全相同. 首先它的表达式要放在{{}}才能使用,其次相对于javas ...
- 绿书模拟day10 单词前缀
[题目描述]一组单词是安全的,当且仅当不存在一个单词是另一个单词的前缀,这样才能保证数据不容易被误解,现在你手上有一个单词集合s,你需要计算有多少个自己是安全的.注意空集永远是安全的.[输入格式]第一 ...
- hdu1757 A Simple Math Problem
Problem Description Lele now is thinking about a simple function f(x).If x < 10 f(x) = x.If x > ...
- WCF基础知识
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的安全.可信赖.事务性 ...
- ubuntu安装ssh
为了解决远程连接ubuntu服务器控制端,方便操作.ubuntu不同的版本安装方式一致!首先在ubuntu服务器下安装SSH服务linux安装命令:sudo apt-get install opens ...
- 【bzoj1060】[ZJOI2007]时态同步
题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...
- jQuery.extend()介绍
},{name:"Jerry",sex:"Boy"}) 得到的Result结果是: result={name:"Jerry",age:21, ...
- 导航栏的坑 (导航透明/导航除线/titleIView)
//以下四个条件缺一不可 /.必须是半透明状态 self.navigationBar.translucent = YES; //2.导航栏背景图片为空图片 (不可以设置backgroundColor或 ...