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 特性
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感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
联系客服