最近有一个私人项目要搞,可能最近的博客都会变成爬虫跟数据分析类的了。既然是爬虫,第一反应想到的就是鼎鼎大名的scrapy了,其次想到的pyspider,最后想到的就是自己写。

scrapy是封装了twisted的一个爬虫框架,项目结构比较清晰

其中Item Pipeline决定了数据传输跟保存的结构,而爬虫的核心部分在spider目录下,而爬虫也只需要关系核心的解析规则编写。可以看出,scrapy框架搭了一个架子,在这框架中其实需要实现的核心功能还是要很多的,但是不需要关心中间件层面的东西了。另外scrapy很方便扩展,因此,是一个很不错的轮子了。

另外一个就是pyspider,这个框架封装了tornado,以及集成了一系列工具,比如lxml, css-selector-help,pyquery,phantomjs等,而且开放的api也相当精简,相当于说,pyspider就是针对新手量身定做的一个框架,类似于scrapy中中间件的东西,这边已经帮你集成好了,所有需要关心的就是你的爬虫规则,甚至爬虫规则都支持单步调试编写,门槛几乎为0了。

经过思考,如果要研究一个框架的技术,我决定还是研究pyspider会比较好,原因如下。

1.同样的异步框架,tornado可能比twisted抽象程度更低,且更现代一点;

2.pyquery,phantomjs等都是目前比较流行的前端解析工具,因此研究一下它的接入方式以及api封装对我来说更有实际价值;

3.不用操心scrapy的动态网站的处理,目前scrapy在我研究中发现,主要有几种方式解决:

(1)scrapy-splash:https://github.com/scrapy-plugins/scrapy-splash,另外有一个实战的例子也贴出来:http://blog.csdn.net/qq_23849183/article/details/51287935

(2)scrapy+spynner:实战例子也贴一下:http://kevinflynn.iteye.com/blog/2230990

但是 spynner是基于PyQT 和 WebKit构建的,而splash也是基于twisted跟QT。有QT,那肯定效率不行啊,还不如用selenium了,在这一点上,phantomjs是基于webkit的js api,因此它的好处就是快。综合考虑下,还是研究pyspider吧。

也许后续会贴出一系列pyspider源码分析的文章。

scrapy跟pyspider的杂谈的更多相关文章

  1. Pyspider框架

    1, 2,在ubuntu安装pyspider如果出现pycul的问题 首先执行命令:sudo apt-get install libssl-dev libcurl4-openssl-dev pytho ...

  2. Python3爬虫(十六) pyspider框架

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.pyspider介绍1.基本功能 提供WebUI可视化功能,方便编写和调试爬虫 提供爬取进度监控.爬取结果查看 ...

  3. python爬虫之Scrapy学习

    在爬虫的路上,学习scrapy是一个必不可少的环节.也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习.开始接触scrapy的朋友可能会有些疑惑,毕竟是一个框架,上来不知从何学 ...

  4. Scrapy框架的架构原理解析

    爬虫框架--Scrapy 如果你对爬虫的基础知识有了一定了解的话,那么是时候该了解一下爬虫框架了.那么为什么要使用爬虫框架? 学习框架的根本是学习一种编程思想,而不应该仅仅局限于是如何使用它.从了解到 ...

  5. Python爬虫之PySpider框架

    概述 pyspider 是一个支持任务监控.项目管理.多种数据库,具有 WebUI 的爬虫框架,它采用 Python 语言编写,分布式架构.详细特性如下: 拥有 Web 脚本编辑界面,任务监控器,项目 ...

  6. 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

    放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...

  7. 芝麻软件: Python爬虫进阶之爬虫框架概述

    综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优 ...

  8. python爬虫 | 一条高效的学习路径

    数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...

  9. 专业的“python爬虫工程师”需要学习哪些知识?

    学到哪种程度 暂且把目标定位初级爬虫工程师,简单列一下吧: (必要部分) 熟悉多线程编程.网络编程.HTTP协议相关 开发过完整爬虫项目(最好有全站爬虫经验,这个下面会说到) 反爬相关,cookie. ...

随机推荐

  1. 日历上添加活动通知(Asp.net)

    <div id="calendar_contain"> </div> <script language="javascript" ...

  2. C#图解教程-方法参数笔记(上)

    一晃大学四年要过去了,期间乱点了很多技能点, 导致每一项技能都只是处于入门阶段.为了将C#作为我的主要技能,准备恶补相关姿势(知识),通过各种技术论坛的推荐,找到了<C#图解教程>这本书. ...

  3. Linux--谈父子进程执行过程

    fork函数用于从已存在进程中创建一个新进程,新进程成为子进程,原进程成为父进程.这两个进程分别返回他们各自的返回值, 其中父进程的返回值是子进程的进程号,子进程则返回0,因此返回值大于0标识父进程, ...

  4. storm kafkaSpout 踩坑问题记录! offset问题!

    整合kafka和storm例子网上很多,自行查找 问题描述: kafka是之前早就搭建好的,新建的storm集群要消费kafka的主题,由于kafka中已经记录了很多消息,storm消费时从最开始消费 ...

  5. 【转载】32复用时钟AFIO开启情况

    原文:http://blog.csdn.net/u012411027/article/details/44217313 百度了很多结果,打开看几乎全是下面这篇文章,真是天下文章一大抄啊.我也抄一下吧. ...

  6. 基于Activiti的流程应用开发平台JSAAS-WF V5.3

    第1章 产品概述及体系架构 1.1.概述 红迅JSAAS-WF工作流平台V5是广州红迅软件有限公司面向合作伙伴以及有IT运维团队中大型企业提供新一代的流程管理产品,它基于流行的JAVA开源技术上构建, ...

  7. Servlet追忆篇:那些年一起学习的Servlet

    title: servlet notebook: javaWEB tags:servlet --- Servlet是什么? Servlet是JavaWeb的三大组件之一. 作用类似银行前台接待: 接收 ...

  8. 安装配置sentry服务

    环境 系统环境:Centos6.7 Hadoop版本:CDH5.10 jdk版本:jdk7 注:本文并未集成kerberos组件 安装Sentry Server 选择安装hive的节点进行安装测试: ...

  9. 图论算法-Dijkstra

    原理 Dijkstra是一个神奇的最短路径算法,它的优点在于它可以稳定的时间内求出一张图从某点到另一点的距离.它的工作原理非常简单,思路类似于广搜.在搜索前,将每个点的颜色设为白色,第一次将源点Ins ...

  10. DDD理论学习系列(1)-- 通用语言

    1.引言 在开始之前,我想我们有必要先了解以下DDD的主要参与者.因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? DDD的主要参与者:领域专家+开发人员 领域专家:精通业务的任 ...