PySpider简介PySpider是一个由国人编写的强大的网络爬虫系统,具有强大的WebUI。Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器、任务监视器、项目管理器和结果查看器。PySpider源自垂直搜索引擎使用的爬虫后端。我们需要采集200个站点的数据(由于站点故障,不是全部同时运行,有100+同时运行),要求对方网站的更新在5分钟内更新。因此,灵活的抓取控制是必须的。同时,由于100个站点,每天都有可能出现站点故障或改版,所以需要能够监控模板故障,查看爬取状态。为了实现5分钟更新,我们在最近更新的页面上使用最后一次更新时间来判断该页面是否需要重新抓取。可见本项目对爬虫监控调度的要求非常高。PySpider中文网:http://www.pyspider.cnPySpider官网:http://docs.pyspider.orgPySpider演示:http://demo.pyspider.orgPySpider源码:https://github.com/binux/pyspiderPySpider具有Python脚本控件,你可以使用任何你喜欢的html分析包(内置pyquery)WEB界面编写调试脚本,启动和停止脚本,监控执行状态,查看活动历史,获取结果输出数据存储支持MySQL,MongoDB、Redis、SQLite、弹性搜索;PostgreSQL和SQLAlchemy队列服务支持RabbitMQ、Beanstalk、Redis、Kombu支持爬取JavaScript页面组件可更换,支持单机/分布式部署,支持Docker部署强大的调度控制,支持超时重爬和优先级设置支持Python2.{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、MacOSX、Windows系统。a)安装pythonget-pip.py的脚本如果没有安装setuptools(或distribute),get-pip.py会自动为你安装setuptools如果你需要升级setuptools(或distribute),运行pipinstall-Usetuptoolsb)安装命令sudoapt-getinstallpython-pip//Debian,Ubuntusudoyuminstallpython-pip//CentOS,Redhat,Fedora2)PhantomJS安装PhantomJS是一个基于WebKitSideJavaScriptAPI的服务器。它完全支持没有浏览器支持的网络,速度快,原生支持各种网络标准:DOM处理、CSS选择器、JSON、Canvas和SVG。PhantomJS可用于页面自动化、网络监控、网页截图和无界面测试。支持Windows、Linux、MacOSX等操作系统。PhantomJS下载:http://phantomjs.org/download.htmlPhantomJS无需安装。解压并配置好环境变量后,即可直接使用。详见PhantomJS安装开发PhantomJS安装命令:sudoapt-getinstallphantomjs//Debian、Ubuntusudopkginstallphantomjs//FreeBSDbrewinstallphantomjs//MacOSX3)PySpider安装PySpider安装依赖requirements.txtFlask>=0.10Jinja2>=2.7chardet>=2.2cssselect>=0.9lxmlpycurlpyqueryrequests>=2.2tormysql-connector-python>=1.2.2pika>=0.9.14pymongo>=2.7.2unittest2>=0.5.1Flask-Login>=0.2.11u-msgpack-python>=1.6click>=3.3SQLAlchemy>=0.9.7six>=1.5.0amqp>=1.3.0,<2.0redisredis-py-clusterkombupsycopg2elasticsearchtblibPySpider安装命令:pipinstallpyspiderUbuntu用户请安装以下配套库advance:sudoapt-getinstallpythonpython-devpython-distributepython-piplibcurl4-openssl-devlibxml2-devlibxslt1-devpython-lxml4)验证安装是否成功在控制台输入命令:pyspiderall使用a浏览器访问http://localhost:5000,正常出现PySpider页面,证明PySpider一切正常例1)例1:爬取米扑科技首页(mimvp.com)#!/usr/bin/envpython#-*-encoding:utf-8-*-#Createdon2017-07-2813:44:53#Project:pyspiderdemo#mimvp.comfrompyspider.libs.base_handlerimport*classHandler(BaseHandler):crawl_config={}@every(minutes=24*60)defon_start(self):self.crawl('mimvp.com',callback=self.index_page)@config(age=10*24*60*60)defindex_page(self,response):foreachinresponse.doc('a[href^="http"]').items():self.crawl(each.attr.href,callback=self.detail_page)@config(priority=2)defdetail_page(self,response):return{"url":response.url,"title":response.doc('title').text(),}运行结果:2)示例2:设置代理抓取网页PySpider支持使用代理抓取网页。使用代理有两种方式:方法一:--phantomjs-proxyTEXTphantomjsproxyip:portstartcommand例如:pyspider--phantomjs-proxy"188.226.141.217:8080"all方法二:设置代理全局变量,如下图所示:crawl_config={'proxy':'188.226.141.217:8080'}示例代码:#!/usr/bin/envpython#-*-encoding:utf-8-*-#创建于2017-07-2814:13:14#项目:mimvp_proxy_pyspider##mimvp.comfrompyspider.libs.base_handlerimport*classHandler(BaseHandler):crawl_config={'proxy':'http://188.226.141.217:8080',#http'proxy':'https://182.253.32.65:3128'#https}@every(minutes=24*60)defon_start(self):self.crawl('http://proxy.mimvp.com/exist.php',callback=self.index_page)@config(age=10*24*60*60)defindex_page(self,response):foreachinresponse.doc('a[href^="http"]').items():self.crawl(each.attr.href,callback=self.detail_page)@config(priority=2)defdetail_page(self,response):return{"url":response.url,"title":response.doc('title').text(),}运行结果:推荐参考:PhantomJS安装开发Python请求安装开发Pythonscrapy安装开发Node.js安装和开发Node.jsSuperAgent安装开发Python3urllib使用详解
