PySpider 简介

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

PySpider 来源于以前做的一个垂直搜索引擎使用的爬虫后端。我们需要从200个站点(由于站点失效,不是都同时啦,同时有100+在跑吧)采集数据,并要求在5分钟内将对方网站的更新更新到库中。所以,灵活的抓取控制是必须的。

同时,由于100个站点,每天都可能会有站点失效或者改版,所以需要能够监控模板失效,以及查看抓取状态。

为了达到5分钟更新,我们使用抓取最近更新页上面的最后更新时间,以此来判断页面是否需要再次抓取。

可见,这个项目对于爬虫的监控和调度要求是非常高的。

PySpider 中文网:http://www.pyspider.cn

PySpider 官网:http://docs.pyspider.org

PySpider 演示:http://demo.pyspider.org

PySpider 源码:https://github.com/binux/pyspider

PySpider 特性

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

PySpider 安装

1) pip 安装

pip可以在以下版本的CPython下运行:2.6, 2.7, 3.1, 3.2, 3.3, 3.4 和 pypy.

pip可以在Unix/Linux、Mac OS X、Windows系统中运行.

a)脚本安装

python get-pip.py

如果 setuptools (或 distribute) 未安装, get-pip.py 会 自动为你安装 setuptools

如果需要升级 setuptools (或 distribute),运行 pip install -U setuptools

b)命令安装

sudo apt-get install python-pip         // Debian、Ubuntu

sudo yum install python-pip             // CentOS、Redhat、Fedora

2)PhantomJS 安装

PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速、原生支持各种Web标准:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 PhantomJS 可以用于页面自动化、网络监测、网页截屏以及无界面测试等。支持Windows、Linux、Mac OS X等多操作系统。

PhantomJS 下载:http://phantomjs.org/download.html

PhantomJS不需要安装,解压后,配置环境变量后,便可直接使用,详见 PhantomJS 安装与开发

PhantomJS 安装命令:

sudo apt-get install phantomjs       // Debian、Ubuntu

sudo pkg install phantomjs       // FreeBSD

brew install phantomjs       // Mac OS X

3)PySpider 安装

PySpider 安装的依赖包 requirements.txt

Flask>=0.10
Jinja2>=2.7
chardet>=2.2
cssselect>=0.9
lxml
pycurl
pyquery
requests>=2.2
tornado>=3.2
mysql-connector-python>=1.2.2
pika>=0.9.14
pymongo>=2.7.2
unittest2>=0.5.1
Flask-Login>=0.2.11
u-msgpack-python>=1.6
click>=3.3
SQLAlchemy>=0.9.7
six>=1.5.0
amqp>=1.3.0,<2.0
redis
redis-py-cluster
kombu
psycopg2
elasticsearch
tblib

PySpider 安装命令:

pip install pyspider

Ubuntu 用户,请提前安装好以下支持类库:

sudo apt-get install python python-dev python-distribute python-pip libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml

4)验证安装成功

控制台输入命令:

pyspider all

使用浏览器访问 http://localhost:5000

正常出现 PySpider 的页面,那证明一切 OK

PySpider 示例

1)示例1:爬取米扑科技首页(mimvp.com

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2017-07-28 13:44:53
# Project: pyspiderdemo
# mimvp.com from pyspider.libs.base_handler import * class Handler(BaseHandler):
crawl_config = {
} @every(minutes=24 * 60)
def on_start(self):
self.crawl('mimvp.com', 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(),
}

运行结果:

2)示例2:设置代理爬取网页

PySpider 支持使用代理爬取网页,其使用代理有两种方式:

方式1:

--phantomjs-proxy TEXT          phantomjs proxy ip:port

启动命令例如:

pyspider --phantomjs-proxy "188.226.141.217:8080" all

方式2:

设置代理全局变量,如下图:

crawl_config = {
        'proxy' : '188.226.141.217:8080'
}

示例代码:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2017-07-28 14:13:14
# Project: mimvp_proxy_pyspider
#
# mimvp.com from pyspider.libs.base_handler import * class Handler(BaseHandler):
crawl_config = {
'proxy' : 'http://188.226.141.217:8080', # http
'proxy' : 'https://182.253.32.65:3128' # https
} @every(minutes=24 * 60)
def on_start(self):
self.crawl('http://proxy.mimvp.com/exist.php', 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(),
}

运行结果:

Python pyspider 安装与开发的更多相关文章

  1. Python requests 安装与开发

    Requests 是用Python语言编写HTTP客户端库,跟urllib.urllib2类似,基于 urllib,但比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求, ...

  2. Python的安装与开发环境的选用

    2021快要结束了,这一年我依旧深耕于python的广阔土壤,将重点放在机器人和传感器的角度.也收获了一大批正在学习和期望学习python的朋友. 正在学习的暂且不言,这篇主要是写给期望学习的朋友,同 ...

  3. 【tensorflow】1.安装Tensorflow开发环境,安装Python 的IDE--PyCharm

    ================================================== 安装Tensorflow开发环境,安装Python 的IDE--PyCharm 1.PyCharm ...

  4. ubuntu 上用virtualenv安装python不同版本的开发环境。

    1.用pip安装virtualenv apt-get install python-virtualenv 2.创建python2的虚拟环境,进入要创建虚拟环境的目录下,我是放在/home/pyenv/ ...

  5. 无脑安装——Python 及 安装python集成开发环境pycharm

    无脑安装--Python 及安装python集成开发环境pycharm 1.真机安装python 2.安装python集成开发环境pycharm Python 是一种解释型语言 Python 是面向对 ...

  6. 在win10系统环境下,安装配置sublime 3,构建python和vue.js开发环境(插件)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_131 疫情当下,最近一直在用mac下的虚拟机运行win10系统,由于在线人数过多,直播授课的时候使用vscode的时候内存暴涨,于 ...

  7. Python的安装和详细配置

    Python是一种面向对象.解释型计算机程序设计语言.被认为是比较好的胶水语言.至于其他的,你可以去百度一下.本文仅介绍python的安装和配置,供刚入门的朋友快速搭建自己的学习和开发环境.本人欢迎大 ...

  8. CentOS 6.5升级Python和安装IPython

    <转自:http://www.noanylove.com/2014/10/centos-6-5-sheng-ji-python-he-an-zhuang-ipython/>自己常用.以做备 ...

  9. Python的安装与基本语法

    一,Python简介      Python是一种计算机程序设计语言,都是使用C语言实现,但是比C语言容易学习,易于阅读.Python可以应用于众多领域,整体呈上升趋势,广泛使用Python来做的事一 ...

随机推荐

  1. 【Android Developers Training】 71. 显示翻牌动画

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  2. Java集合框架梳理(含经典面试题)

    Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. 1. 整体框架 Java容器类库一共有两种主要类型:Collection ...

  3. c# webbrower 代理 类 IEProxy

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...

  4. 最新的极光推送服务器端代码(java服务器后台向手机端自定义推送消息)

    一共两个类 一个Jdpush  一个JpushClientUtil 代码如下   注解都写的很清楚 package com.sm.common.ajpush; import org.slf4j.Log ...

  5. Python系列教程(三):输入和输出

    1.1 raw_input() 在Python中,获取键盘输入的数据的方法是采用 raw_input 函数(至于什么是函数,咱们以后的章节中讲解),那么这个 raw_input 怎么用呢? 看如下示例 ...

  6. SQLite的总结与在C#的使用

    这几天接触了一下SQLite,算是有点收获吧,因此总结一下. SQLite简介: SQLite是用C语言编写的数据库引擎,可以运行在Linux.Windows.Mac平台上. SQLite安装简单,下 ...

  7. 收集了一些容易出错的题,可能大家也不会注意到的基础知识(js)

    ---恢复内容开始--- 1.题中运用到函数表达式.构造函数.原型.优先级.this. 2.参数影响 3.对原型的运用 4.递归 5.基本类型与引用类型传递 6.优先级 7.自调用函数 ---恢复内容 ...

  8. 给xcode项目修改名字

    在xcode项目开发中,经常会遇到需要修改项目名字的问题, 但是xcode本身修改项目名字比较麻烦,有时候修改的不完全,有时候修改了项目无法打开,无奈只能建一个新项目.这里提供一种修改xcode项目名 ...

  9. 基本的传染病模型:SI、SIS、SIR及其Python代码实现

    本文主要参考博客:http://chengjunwang.com/en/2013/08/learn-basic-epidemic-models-with-python/.该博客有一些笔误,并且有些地方 ...

  10. Es6 新增解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 要想实现解构,就必须是容器,或者具有可遍历的接口. 以前,为 ...