zoukankan      html  css  js  c++  java
  • (转)Python爬虫--通用框架

    转自https://blog.csdn.net/m0_37903789/article/details/74935906

    前言:
    相信不少写过Python爬虫的小伙伴,都应该有和笔者一样的经历吧只要确定了要爬取的目标,就开始疯狂的写代码,写脚本经过一番努力后,爬取到目标数据;但是回过头来,却发现自己所代码复用性小,一旦网页发生了更改,我们也不得不随之更改自己的代码,而却自己的程序过于脚本化,函数化,没有采用OPP的思维方式;没有系统的框架或结构。
    指导老师看了笔者的爬虫作品后,便给出了以下三点建议:
    (1)爬虫爬取的数据根据需要存数据库或直接写入.csv文件;
    (2)爬虫程序包括控制程序、URL调度器、页面加载器、页面分析器、数据处理器等,尽量用OOP的思想,写成类,便于扩充,而不要直接全写成脚本;
    (3)控制程序最好使用一个用户界面,用于设置开始爬取的页面、数据存放位置、显示爬取情况等。
    由于笔者知识和能力有限,刚听到这些建议时,很难明白他的意思,而笔者还偏执的认为既然已经成功的爬取到目标数据,也就没什么要做的啦,已经OK啦直到昨天看了这个http://www.imooc.com/learn/563关于Python爬虫的课程后,才彻底的理解了老师教的课程里系统的讲解了爬虫应有的框架和结构,使笔者收益匪浅,故在此总结,反思,希望对大家有帮助。
    这里先为它,打个小广告吧~笔者个人认为,不管你是资深的Python爬虫专家,还是才接触爬虫的新手,都应该来看一看,为你以后的Python爬虫工作添砖加瓦,广告语“慕课网—程序员的梦工厂”。
    PS:以下截图,为笔者再听课时截图整理所得,故图片来源该课程的PPT
    基于百度百科词条,通用爬虫源码:https://github.com/NO1117/baike_spider
    Python交流群:942913325 欢迎大家一起交流学习
    总结:
    1.爬虫思路

    爬虫过程
    如上图所示,一般在开始爬虫时,都会经历这样的思考过程,其中最为主要和关键的分析目标,只有经过准确的分析和前期的充分准备,才能顺顺利利的爬取到目标数据。
    2.爬虫任务:
    在这里插入图片描述
    3.爬虫的框架及运行流程图
    接下来,就一起学习一下Python爬虫的框架吧~
    爬虫框架

    爬虫的大致运行过程如下:
    运行流程图

    4.URL管理器
    所谓的URL管理器,主要是由两个集合构成(待抓取URL集合和已抓取URL集合),其目的是为了防止重复抓取,循环抓取;
    URL管理器

    URL管理器的实现方式,分三种:a,Python内存(即集合);b,数据库(如MySQL,MongoDB等);c,缓存数据库
    实现方式

    5.网页下载器
    所谓网页下载器,即是将互联网上URL对应的网页下载到本地的工具
    网页下载器

    网页下载器,大致为request和urllib2两种;
    分类

    6.网页解析器
    什么是网页解析器?
    在这里插入图片描述
    下面,我们来看看,如何解析一个网页文件
    网页解析器结构
    分类
    解析器种类:在这里插入图片描述

    好了,通过以上的学习,我们掌握了Python爬虫的简单框架。那么怎样才能写一个好的python爬虫呢?又该如何去编写代码,实现我们的爬虫功能呢?下一步又该如何优化我们的爬虫代码呢?

  • 相关阅读:
    Object上的静态方法
    【php实现数据结构】单向链表
    图片上传方案详解
    新手必踩坑之display: inline-block
    前端算法题:找出数组中第k大的数字出现多少次
    this的五种指法
    通过java反射实现的excel数据导出
    算法系列-动态规划(4):买卖股票的最佳时机
    算法系列-动态规划(3):找零钱、走方格问题
    数据库仓库系列:(一)什么是数据仓库,为什么要数据仓库
  • 原文地址:https://www.cnblogs.com/xx123/p/10425835.html
Copyright © 2011-2022 走看看