今天主要学习了爬虫的基本架构,下边做一下总结:

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

2.给大家讲一下爬虫架构的运行流程:首先是调度器向URL管理器发出询问请求,问是否有待爬取的URL,然后URL管理器会返回一个信息(是或否)给调度器,如果有待爬取的URL的话,调度器会进一步发出获取待爬取URL的指令,URL管理器接收到该指令后,会将待爬取的URL发送给调度器,紧接着,调度器会将此URL传送给下载器,命令下载器下载URL所指向的内容,下载器下载完成后,会将下载内容返回给调度器,然后调度器接收到下载内容后会将其传送给解析器,解析器会将解析完的内容(包括价值数据、新的URL)返回给调度器,调度器将解析后的内容进行一系列操作,比如说存储下来,若有新的URL在解析内容中,又会重复以上步骤。

3.URL管理器的作用:管理好待爬取的URL集合以及已爬取的URL集合,防止重复抓取以及循环抓取。

4.URL管理器的实现方式主要有三种:(1)存放在内存之中  Python内存 待抓取URL集合:set()

                                 已抓取URL集合:set()

                 (2)存放在关系数据库MySQL url(url,is_crawled)

                 (3)存放在缓存数据库redis     待抓取URL集合:set

已抓取URL集合:set

5.网页下载器:通俗的讲,网页下载器就是将网页内容下载到本地计算机的工具,将网页内容保存为本地文件或者内存字符串

python主要有两种网页下载器:urllib2和requests(这个今天学的不是很理解,以后在慢慢解释)

以上就是今天所学内容,因为是初学阶段,在一些方面可能理解的不是很确切,还请多多指正,大家共同学习,一起进步,谢谢。

python-day2爬虫基础之爬虫基本架构的更多相关文章

  1. python,Day2,基础 2

    list和dict list是一种有序的集合,可以随时添加和删除其中的元素. 例如: >>>classmates = ['eason','grace','alice'] >&g ...

  2. Python——Day2(基础知识练习一)

    1.执行Python脚本的两种方式1)调用解释器 Python +绝对路径+文件名称2)调用解释器 Python +相对路径+文件名称 2.简述位.字节的关系8位为1个字节 3.简述ASCII.uni ...

  3. 【学习笔记】第二章 python安全编程基础---python爬虫基础(urllib)

    一.爬虫基础 1.爬虫概念 网络爬虫(又称为网页蜘蛛),是一种按照一定的规则,自动地抓取万维网信息的程序或脚本.用爬虫最大的好出是批量且自动化得获取和处理信息.对于宏观或微观的情况都可以多一个侧面去了 ...

  4. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  5. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

  6. python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---常用第三方库 ...

  7. python从爬虫基础到爬取网络小说实例

    一.爬虫基础 1.1 requests类 1.1.1 request的7个方法 requests.request() 实例化一个对象,拥有以下方法 requests.get(url, *args) r ...

  8. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  9. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

随机推荐

  1. UVA - 1614 Hell on the Markets(奇怪的股市)(贪心)

    题意:输入一个长度为n(n<=100000)的序列a,满足1<=ai<=i,要求确定每个数的正负号,使得所有数的总和为0. 分析: 1.若总和为0,则未加符号之前,所有数之和必为偶数 ...

  2. 关于数据库text字段

    问题描述: maven项目中,使用MBG代码生成器自动生成的实体类对象时,当数据库中表的字段有 text 类型时,对应到java类中是String类型的,在前端页面通过ajax获取到 json 格式的 ...

  3. 【pwnable.kr】 shellshock

    pwnable从入门到放弃,第五题. ssh shellshock@pwnable.kr -p2222 (pw:guest) 这题主要涉及了一个关于bash的CVE漏洞. 首先还是下载源代码审计一下, ...

  4. dns、网关、IP地址,主要是配置resolv.conf\network\ifcfg-eth0

    Ubuntu sudo vi /etc/network/interfac   添加 dns-nameservers 192.168.1.254dns-search stonebean.com cent ...

  5. 刷题48. Rotate Image

    一.题目说明 题目是48. Rotate Image,简而言之就是矩阵顺时针旋转90度.不允许使用额外的矩阵. 经过观察(写一个矩阵,多看几遍就知道了),旋转90度后: 第1行变为len-1列(最后一 ...

  6. 剑指offer_2.1_Day_5

    输入一个链表,按链表从尾到头的顺序返回一个ArrayList. import java.util.ArrayList; public class Solution { public ArrayList ...

  7. JDBC批处理方法

    每次新建Connection的时候相当于建了一座桥,每次一辆车(PreparedStatement)运送货物(ResultSet)成本太高! 每次都建立网络连接的时间远远大于本地的时间,为了处理大量的 ...

  8. js去除热点的虚线框

    1.一个页面有多张图片,图片的链接为热点绘制,在ie中点击会出现虚线框. <script type="text/javascript"> window.onload = ...

  9. POJ - 1631 Bridging signals(最长上升子序列---LIS)

    题意:左右各n个端口,已知n组线路,要求切除最少的线路,使剩下的线路各不相交,按照左端口递增的顺序输入. 分析: 1.设左端口为l,右端口为r,因为左端口递增输入,l[i] < l[j](i & ...

  10. POJ 3911:Internet Service Providers

    Internet Service Providers Time Limit: 2MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I ...