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

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. 吴裕雄--天生自然C++语言学习笔记:C++ 基本的输入输出

    C++ 的 I/O 发生在流中,流是字节序列.如果字节流是从设备(如键盘.磁盘驱动器.网络连接等)流向内存,这叫做输入操作.如果字节流是从内存流向设备(如显示屏.打印机.磁盘驱动器.网络连接等),这叫 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-italic

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. linux下如果指令太长,怎么换行输入;怎么快速删除整行命令;怎么快速移动到命令最前或者最后

    1.范例:如果指令串太长的话,如何使用两行来输出?[dmtsai@study ~]$ cp /var/spool/mail/root /etc/crontab \> /etc/fstab /ro ...

  4. <强化学习>基本概念

    马尔可夫决策过程MDP,是强化学习的基础. MDP --- <S,A,P,R,γ> AGENT STATE ENV  REWARD   ,由ENV给出.agent处于状态s下,采取acti ...

  5. C# ASP 面试题 2017

    在博客上看到的,感觉还不错 https://www.cnblogs.com/renyiqiu/p/6435261.html

  6. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  7. <style scoped >中使用深度选择器影响子组件

    摘自:https://blog.csdn.net/zhouzuoluo/article/details/95593143 <style scoped >中使用深度选择器影响子组件 在< ...

  8. electron app弹出默认对话框后页面失去焦点问题

    最近再做electron app程序的做删除数据操作的时候遇到一个诡异的bug,页面点击删除按钮后,弹出确认对话框后,页面失去焦点,文本框无法点击输入任何参数,但是使用浏览器操作正常,最后确定是ele ...

  9. 什么是控制反转IOC

    1.IOC 是什么 IOC- Inversion of Control , 即“控制反转” ,不是一个技术,而是一个设计思想,在java 开发中,IOC意味着将你设计好的Java 对象交个容器控制,而 ...

  10. nginx常用内置变量

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...