开发scrapy web界面(一)

scrapy 是一个很强大的爬虫框架,可以自定义很多插件,满足我们不同的需求....

首先我们应该要会用twisted 写web service

其实scrapy 已经帮我们做了整理了

from scrapy.utils.reactor import listen_tcp  

listen_tcp就可以开启web service

所以web 插件可以这样写

class WebService(server.Site):
    name = ‘WebService‘
    def __init__(self, crawler):
        self.crawler = crawler
        self.crawler.itemData = []

        portal = Portal(PublicHTMLRealm(Root(self.crawler)),
                        [StringCredentialsChecker(‘test‘, ‘tset‘)])
        credential_factory = BasicCredentialFactory("Auth")
        resource = HTTPAuthSessionWrapper(portal, [credential_factory])

        server.Site.__init__(self,resource)

        self.crawler.signals.connect(self.start_listening, signals.engine_started)
        self.crawler.signals.connect(self.stopService, signals.engine_stopped)
        self.crawler.signals.connect(self.item_scraped, signals.item_scraped)
        self.crawler.signals.connect(self.spider_idle, signal=signals.spider_idle)

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler)

    def start_listening(self):
        self.port = listen_tcp([8000,8070], ‘127.0.0.1‘,self)
        h = self.port.getHost()
        logger.info("scrapy web console available at http://%(host)s:%(port)d",
                    {‘host‘: h.host, ‘port‘: h.port},
                    extra={‘crawler‘: self.crawler})
        import webbrowser
        webbrowser.open("http://%(host)s:%(port)d"%{‘host‘: h.host, ‘port‘: h.port})

    def stopService(self):
        self.port.stopListening()

    def item_scraped(self,item, response, spider):
        try:
            self.crawler.itemData.append(item)
        except:
            pass

    def spider_idle(self):
        raise DontCloseSpider

  

然后界面可以在Root里实现。

以下是实现的界面

可以添加控制爬虫的一些操作,如爬虫暂停、添加开始爬的内容等

当然、还可以做一些调试的界面或是其他有趣的

原文地址:https://www.cnblogs.com/apuyuseng/p/12252586.html

时间: 2025-01-04 03:36:02

开发scrapy web界面(一)的相关文章

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

下载Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookeeper的Fast Fail 和 Leader选举特性大大增强了分布式集群的稳定和健壮性,并且解决了Master/Slave模式的单点故障重大隐患,这是越来越多的分布式产品如HBase.Storm(流计算).S4(流计算)等强依赖Zookeeper的原因. Zookeeper从入门到精通(开发详解,案

Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookeeper的Fast Fail 和 Leader选举特性大大增强了分布式集群的稳定和健壮性,并且解决了Master/Slave模式的单点故障重大隐患,这是越来越多的分布式产品如HBase.Storm(流计算).S4(流计算)等强依赖Zookeeper的原因. Zookeeper在分布式集群(Hadoop

CSS3实战开发: 弹性盒模型之响应式WEB界面设计

各位网友大家好,如果你已经阅读过我先前写的关于CSS3弹性盒模型的实例演示,相信你对CSS3弹性盒模型属性知识点应该已经有了一个非常深刻的映像. 从本篇文章开始,我将带领大家,手把手地教大家如何来开发一个适合移动端浏览器的弹性盒模型的响应式页面.同时实战开发中的案例代码可以作为你项目中的精简框架了. 当你学习完成<CSS3实战开发: 弹性盒模型之响应式WEB界面设计>这个系列教程之后,相信你对目前比较流行的前端轻量级框架 Bootstrap等会有一个深刻的认识. Bootstrap(弹性流体布

如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI

如何让程序员更容易的开发Web界面,是一个持久的话题,所有的从事相关开发的公司都会碰到这个问题,并且被这个问题所深深困扰. Tiny框架也不得不直视这个问题,确实来说,想解决这个问题,也是非常有难度与深度的,业界也有各种各样的尝试,这也是有各种各样不同框架出现的原因. Tiny框架构建者认为,完全采用一种框架解决所有问题,是不现实的.而且即使目前找得到一种非常好的框架,暂时可以满足应用需要,但是随着技术的发展,业务的进化,就会慢慢变得不再满足业务需要.因此,Tiny框架构建从不再把做一套UI组件

OpenWRT - WEB界面开发思路和基本方法

想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是系统的一些参数)进行修改. 甚至是与远端服务器交互,实现验证. 一. 几种可行的开发路线: 1.改用PHP.JSP等语言开发 2.修改已有的界面,实现自己的功能 2.1 修改已有样式表 2.2 仍然利用lua开发 第一种比较容易操作,但需要在设备里安装nginx和PHP环境,然后在 /www下放PH

开发程序实现nginx代理节点状态检查及WEB界面展示

实现功能介绍: 利用shell程序及http服务巧妙的实现监控nginx代理节点状态检查,然后通过web界面实时刷新显示结果,是不是有些吃惊这样高大上的程序?那就赶紧看看吧!to用人单位:此课程可以体现学生shell编程功力,以及对nginx proxy企业实战及驾驭的能力. 不同的同学的三个实现方法分享,各位看官,你们看看哪个同学的更好,请评论. 第一个实现脚本:youjinyi 视频下载看地址:http://down.51cto.com/data/1914201 #!/bin/sh port

基于MVC+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

AngularJS开发下一代Web应用笔记(一)

一.写在最前 AngularJS是Google推出的一款Web应用开发框架.它提供了一系列兼容性良好并且可扩展的服务,包括数据绑定.DOM操作.MVC设计模式和模块加载等. 现在网上JS框架茫茫多,真不知道是到底要学习什么框架,学习了这个框架,说不定还没用在项目,又有更好的js框架出来了.前端就是不断折腾新东西,生命在于折腾~ 是的,这么多的前端框架,是不是真的都要学习??答案当然不是,看所要完成的项目.这是带我的前端前辈告诉我,具体使用什么框架还是不用框架, 看项目需求,一切都以按时按质完成作