GitHub上超9Kstars的Python爬虫项目——pyspider(国人编写)

A Powerful Spider(Web Crawler) System in Python

简介

PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。

特性

  • python 脚本控制,可以用任何你喜欢的html解析包(内置 pyquery)
  • WEB 界面编写调试脚本,起停脚本,监控执行状态,查看活动历史,获取结果产出
  • 数据存储支持MySQL, MongoDB, Redis, SQLite, Elasticsearch; PostgreSQL 及 SQLAlchemy
  • 队列服务支持RabbitMQ, Beanstalk, Redis 和 Kombu
  • 支持抓取 JavaScript 的页面
  • 组件可替换,支持单机/分布式部署,支持 Docker 部署
  • 强大的调度控制,支持超时重爬及优先级设置
  • 支持python2&3

安装

pip install pyspider

启动环境

安装完成后运行以下命令运行pyspider程序

pyspider

注意:pyspider命令默认会以all模式运行所有的组件,方便调试。作者建议在线上模式分开部署各各组件,详情请查看部署章节

运行成功后用浏览器打开 http://localhost:5000/ 访问控制台

编写脚本

在web控制台点create按钮新建任务,项目名自定义。本例项目名为test。

保存后打开代码编辑器(代码编辑器默认有简单的实例代码)

右侧就是代码编辑器,以后可以直接在这添加修改代码。本实例就直接使用以自带的代码吧。代码如下

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2015-10-08 12:45:44
# Project: test

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://scrapy.org/', callback=self.index_page)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('a[href^="http"]').items():
            self.crawl(each.attr.href, callback=self.detail_page)

    @config(priority=2)
    def detail_page(self, response):
        return {
            "url": response.url,
            "title": response.doc('title').text(),
        }

执行任务

  • 当您完成脚本编写,调试无误后,请先保存您的脚本!然后返回到控制台首页。
  • 直接点击项目状态status那栏,把状态由TODO改成debug或running。
  • 最后点击项目最右边那个RUN按钮启动项目。

案例分享

pyspider 爬虫教程(一):HTML 和 CSS 选择器 pyspider 爬虫教程(二):AJAX 和 HTTP pyspider 爬虫教程(三):使用 PhantomJS 渲染带 JS 的页面 pyspider爬京东商品信息案例分享 巧用send_message提高pyspider的抓取速度及避免被封IP 如何把采集结果存入mysql

在线使用Dashboard - pyspider

看到国人自己写的爬虫框架,一点也不别Scrapy差,你说呢

其实我在想,能不能自己写个框架出来:)

Pyspider binux/pyspider 官方文档 pyspider

原文发布于微信公众号 - Python爬虫与算法进阶(zhangslob)

原文发表时间:2017-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网开发者交流社区

SpringBoot配置文件的加载位置

1872
来自专栏黑泽君的专栏

通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件

1、在MyEclipse中,Java视图下,新建一个普通的java project,新建该项目的目的是:用来接收反转引擎生成的实体类和对应的映射文件。

1712
来自专栏wblearn

代码提示插件Spket

Spket是一个可以在Eclipse及MyEclipse中实现JavaScript代码自动提示、自动校验、自动纠错的插件。

1181
来自专栏Laoqi's Linux运维专列

LNMP基础架构实现

架构原理: LAMP=linux+apache+mysql+php LNMP=linux+nginx+mysql+php 一、初入LNMP 当我们讲LAMP的时...

3294
来自专栏python学习之旅

Python笔记(一):安装+爬虫环境配置+打包为EXE文件

1、     安装 https://www.python.org/downloads/windows/ 到官网下载安装程序 Windows x86      ...

45210
来自专栏美奔科技

web站点应用之路_wdcp面板部署篇(一)

熟悉的人都知道,搭建web几乎是最简单的了,一般有两种方式来搭建web站点.一种是自己先安装各类环境,比如php+apache+mysql ,或者是asp.ne...

2605
来自专栏静下来

windows IIS7独立服务器下 Discuz伪静态设置

蛮多刚接触discuz程序的人,不太明白怎么设置伪静态。我也是看群里蛮多人在问,就根据我自己的服务器来说下。 因为我就一个windows2008 IIS7环境下...

3694
来自专栏Vue ssr

vue填坑记录:serverCacheKey缓存

服务器端渲染时,缓存是一个逃不开的优化点,降低node server 负载,提高QPS。

5393
来自专栏吴柯的运维笔记

如何用Rysnc实现数据同步?

Rsync(remote sync) 是UNIX及类UNIX平台一款数据镜像备份软件,它不像FTP等其他文件传输服务那样需要进行全备份,Rsync可以根据数据...

41213
来自专栏技术博文

SSDB 配置文件

SSDB 的配置非常简单, 附带的 ssdb.conf 你不用修改便可以使用. 如果你要高度定制, 还是需要修改一些配置的. 下面做介绍. SSDB 的配置文件...

2755

扫码关注云+社区

领取腾讯云代金券