打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python pyspider 安装与开发-CSDN博客
userphoto

2023.12.18 北京

关注

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就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!

2️⃣国内外Python书籍、文档

① 文档和书籍资料

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python 爬虫(七):pyspider 使用
python爬虫|pyspider的第一个爬虫程序,大功告成!
PySpider框架安装配置
小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装
PySpider 使用过程中的问题记录
pyspider使用实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服