python爬虫

作者: 天字一等 | 来源:发表于2018-04-16 10:54 被阅读60次

转载自:http://www.imooc.com/article/15028

爬虫基本架构

  • 一个网络爬虫的简单架构包括
    1.爬虫调度端:开启爬虫程序
    2.爬虫程序(其中包括三部分)
    URL管理器 管理待爬取的和已爬取的URL
    网页下载器 把爬取的网页下载到本地,储存成一个字符串
    网页解析器 把储存的字符串送给解析器进行解析
    3.数据整合分析
    得到 1)有价值的数据
    2)网页中包含的其他网页的URL,再把它们补充进URL管理器中


    图片描述
  • 这个简单爬虫架构的运行流程(如下图)


    图片描述

    调度器是爬虫程序中三个子程序(管理器,下载器,解析器)的直接交互对象,每次运行一个子程序,会把结果返回给调度器,调度器在发送相应指令给该子程序。
    所以调度器是爬虫运行的推动程序,控制着整体的进程,爬取过程就是调度器不断运行,不断按照次序激活相应子程序的循环过程

  • URL管理器简介
    功能:管理两类URL的集合
    1)待抓取的URL
    2)已抓取的URL
    作用:防止重复抓取和循环抓取

    图片描述

    实现方式
    -----把两类URL集合存储在什么地方?
    1)直接存到python内存中
    2)存储在关系型数据库(mySQL)中
    3)存储在缓存数据库redis中
    大型企业级常用redis,小型公司或个人用mySQL或直接用内存即可

    图片描述

网页下载器实现方式(urlib2)

  • 网页下载器简介


    图片描述
  • 两种常用网页下载器


    图片描述

    下面的内容都是python官方的urllib2模块使用方法(urllib2是基础,前期练习阶段先抓住这个库学习,学通了以后再进军更强大的Requests库)

  • 第一步:最基本的功能--通过URL直接抓取
    urllib2以urlopen函数的形式提供了一个非常简单的接口
    1.直接请求方式(最简单的)
    ----用urllib2.open()方法直接打开

    图片描述

    对应代码实例

    import urllib2  
    response = urllib2.urlopen('http://www.baidu.com/')  
    html = response.read()  
    print html 
    

    2. 发送间接请求
    用一个Request对象来映射你提出的HTTP请求,即用你要请求的地址创建一个Request对象。通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

import urllib2    
req = urllib2.Request('http://www.baidu.com')    
response = urllib2.urlopen(req)    
the_page = response.read()    
print the_page 
  • 第二步:增强处理
    1.发送data表单数据
    2.设置Headers到http请求

  • 第三步:添加特殊情景处理器

作者: quantumcheese
链接:http://www.imooc.com/article/15028
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

相关文章

网友评论

  • IT人故事会:做开发很累,还的学习,之前你这个我也碰到过,但是没记录谢谢了

本文标题:python爬虫

本文链接:https://www.haomeiwen.com/subject/pavskftx.html