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

时间:2022-05-07
本文章向大家介绍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